forked from OpenDDS/OpenDDS
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNEWS
1776 lines (1272 loc) · 74.4 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Version 3.7 of OpenDDS.
Additions:
- Implements FACE Transport Services API v2.1, FACE safety base and
FACE safety extended profiles (Future Airborne Capability Environment).
- Implements DDS 1.4 and RTPS 2.2.
- Support allocations from memory pool in safety profile builds. Introduced
standard library containers and strings, as well as TAO sequences that
allocate from this pool.
- To support FACE TS, the IDL struct DDS::SampleInfo has a new field
"opendds_reserved_publication_seq" as an extension to the DDS specification.
- Updated opendds_idl for FACE support, moving some of the code-generation
from tao_idl to opendds_idl when targeting FACE TS.
- Support IDL fixed type inside of DCPS_DATA_TYPE (used with FACE TS).
- Type-specific DataWriterImpl and DataReaderImpl are now templates. Code
generation now introduces a typedef of these.
- Content filtering now supports modulus (MOD) operator as an extension.
- Added a static (configuration-based) discovery mechanism.
- RTPS Discovery is now supported when OpenDDS is built without built-in topics.
- RTPS Discovery has a new configuration parameter SedpLocalAddress which
configures the rtps_udp transport used internally by discovery in the same way
that local_address configures a user-created rtps_udp transport instance.
- Support non-default liveliness QOS in rtps_udp transport.
- Support wait_for_acknowledgements in rtps_udp transport.
- Support command line option -DCPSRTISerialization when integrating with RTI
DDS using RTPS, to account for a different serialization algorithm.
- Configure script handles some cross-compile builds and safety profile.
- Support for new Visual Studio compilers (vc11, vc12, and vc14).
- Support for clang builds on Mac OS X.
- Removed support for old GCC compilers (<= 3.3).
- opendds_idl command-line option -Gitl is a replacement for -Gws. Wireshark
dissector now reads ITL files, rather than .ini files.
Fixes:
- Fixed many tests for minimum profile builds.
- Enforced correct behavior of a reliable data writer when history QoS
is set to KEEP_LAST with depth=1.
- opendds_idl can now be specified in user_macros.GNU instead of always
assuming it is in $DDS_ROOT/bin (for -type gnuace builds).
- Fixed initial IPv6 support in windows builds.
- Fixed disassociate handling of local entities on loopback interface.
- Corrected wait_for_acknowedgements for non-reliable writers to return
success immediately.
- Allow disassociating readers to finish processing messages from active writer
before removing.
- Remove TcpDataLink from DataLinkSet when connect() fails. Previously, the
datalink would remain and would be seen as a fully-connected datalink by new
associations.
- DCPSTransportDebugLevel 1 messages are now association-oriented.
- Fixed durable resend out-of-order handling for rtps_udp transport.
- Fixed handling of acknowledgements during shutdown of rtps_udp data link.
- RTPS Discovery now ignores 'RTPX' messages seen during RTI integration.
- Dissection of unions in wireshark dissector (requires ITL).
- Corrected reference counting scheme for Recorder and Replayer objects:
the reference-counted handle types changed from _rch to _var.
Notes:
- OCI no longer builds with vc71, vc8, and GCC 4.1.1. If you require support
of these older platforms contact [email protected].
- The project repository is now at https://github.com/objectcomputing/OpenDDS
Version 3.6 of OpenDDS.
Notes:
- The discovery framework of OpenDDS has been refactored to be more
asynchronous. This should make discovery faster and more reliable
for both publishing and subscribing clients, regardless of the
discovery mechanism used (RTPS or InfoRepo).
- DataWriters now release locks more quickly than before. This allows the
transport to be available to more threads when compared to 3.5.1.
- Improved DDS specification compliance with regards to reliability,
resource limits, and history qos settings. Specifically, reliable
data writers may block for max_blocking_time and potentially return
DDS::RETCODE_TIMEOUT in situations where they would have simply
written the data in older version of OpenDDS. The new behavior
is required by the DDS specification, see section 2.2.2.4.2.11
of the version 1.4 specification for details. This change affects
various operations of the data writer interface including the
write and register operations.
Additions:
- The wireshark dissector now supports wireshark versions 1.8.x, 1.10.x,
1.12.x, and 1.99.1.
- The modeling framework now support Eclipse 4.4 (Luna) and GMF 3.1.x
- Added a public_address option for the tcp transport. This option
allows a tcp transport instance to listen on one address (local_address)
while advertising another address (public_address) to discovery.
This feature was used to allow a proxy process between the subscriber
and publisher in the TcpReconnect test, but may also be useful in
other deployment scenarios, especially using OpenDDS through a firewall.
Fixes:
- There were a number of concurrency and thread utilization improvements.
These changes fixed a number of threading issues as well as improving
the efficiency of publication.
- Fixed some issues with RTPS discovery.
- Fixed a number of issues related to the reconnect functionality of
the tcp transport.
- Fixed some bugs in the OpenDDS IPv6 support.
- Eliminate duplicate samples received during durable resend.
- Fixed memory leak at shutdown time in modeling library.
Tests:
- Many updates to make test results more complete and deterministic.
- Added a TcpReconnect test that exercised the ability of the tcp
transport to seamlessly reconnect OpenDDS clients when the transport
layer drops a connection.
- Added a WriteDataContainer unit test to verify data writer memory
management compliance with the DDS specification.
- Added a PubScalability test that was used to test association and
publications with large numbers of subscribers.
- Added a packet reassembly unit test.
========================================================================
Version 3.5.1 of OpenDDS.
Notes: Due to addition control messages in the 3.5.1 release, mixing 3.5.0
and 3.5.1 releases should work properly, but the 3.5.0 data readers can emit
the following error message when associating with a durable 3.5.1 data
writer:
ERROR: DataReaderImpl::data_received unexpected message_id = 11
Upgrade all endpoints to 3.5.1 to remove this error message.
Additions:
- Support later (>= 4.7) versions of GCC compilers, and later (>= 2.0a)
builds of TAO. Configure script now downloads 2.2a by default.
- Added IDL compiler support for typedef of string fields within unions.
Added Java IDL compiler support for struct forward declarations.
- Updated UML design diagrams to reflect current code base.
Fixes:
- DCPSInfoRepo no longer informs a subscriber about a crashed or killed
publisher. This made associations of current publishers and subscribers
delayed until timeout was reached.
- Fixed deadlock condition in send_delayed_notifications() resulting from
multiple datawriters.
- Fixed deadlock in DataLinkSet::send_control().
- Fixed deadlock in WaitSet::wait() and DataReaderImpl::data_received().
- Fixed multicast transport with multiple participants in a single process.
- Fixed parsing of -ReassociateDelay argument by DCPSInfoRepo.
- Fixed crash of long-lived zero-copy sequence when it is destroyed and
crash of zero-copy sequence accessing released instances.
- Fixed unprotected access to DataWriterImpl::reader_info_, and
TransportSendStrategy::pkt_chain_.
- Fixed multiple RTPS crashes when participant is being deleted.
- Fixed RTPS crash when a data reader is being deleted.
- Fixed problem for non-unique repo ids for multicast when multiple
(non-federated) DCPSInfoRepos are used on the same network.
- Fixed crash caused by back-pressure in transport causing the most recent
sample for an instance to be dropped.
- Fixed error in reconstruction logic for fragmentation of udp and multicast
transport packets.
- Fixed PublisherImpl and SubscriberImpl to properly set a DataWriterImpl
or DataReaderImpl entity's deleted flag during deletion to allow
association checks to properly identify entities that are being deleted and
not proceed in association.
- Fixed problem for persisted DCPSInfoRepo where persisted participants
were never dissociating.
- Fixed activity improperly occuring when a partipant is being deleted
that caused pure virtual function calls. In one case, waiting now takes
place during deletion of a data writer until all control messages sent during
unregistration of instances are account for. In another case fixed so
TransportSendControlElement will delete itself before it reports to the listener
that the message has been delivered/dropped.
Tests:
- Many updates to make test results more deterministic.
- Added Reliability test.
- Added ManyToMany test to test associations with additional participants,
publishers, subcribers, data readers and data writers.
- Added PersistentInfoRepo test.
- Restored thrasher medium and high test cases.
- Rewrite Priority test to make it verify proper QOS functionality.
- Rewrite LargeSample test to make it verify message contents are as expected.
========================================================================
Version 3.5 of OpenDDS.
- Updates to RTPS support resulting from both interoperability
testing (March 2013 OMG meeting) and user feedback.
- Fixed a bug in the DataReader relating to the Deadline timer.
- Generated TypeSupportImpl classes now contain nested typedefs that
facilitate programming with C++ templates.
See tests/DCPS/ManyTopicTest for an example of usage.
- Added config options to bind RTPS-related multicast sockets to
specific network interfaces. See the ChangeLog for details.
- Fixed an opendds_idl code generated bug when typedefs of basic
types are used as fields of structs.
- Corrected a number of other bugs related to discovery and scaling.
========================================================================
Version 3.4.1 of OpenDDS.
- Added a new option to opendds_idl, -Wb,v8, which generates type support
for copying DCPS structs from C++ objects to JavaScript objects -- requires
the V8 JavaScript engine. See https://npmjs.org/package/opendds for OpenDDS
integration with Node.js.
- Fixed a bug in serialization with misaligned reads. It only impacts
certain platforms with strict alignment requirements such as SPARC/SunCC.
- Clang 3.2 is now a supported compiler.
- Fixed a bug in the rtps_udp transport, in certain cases an invalid Gap
submessage was sent which can result in data samples not being received.
========================================================================
Version 3.4 of OpenDDS.
- Added new OpenDDS-specific APIs for sending and receiving untyped data,
(does not require code generation from IDL data structures). See the
Recorder and Replayer classes and the test in tests/DCPS/RecorderReplayer.
- Implemented the ability to send fragmented data with the rtps_udp transport.
- Fixed a bug in copy_from_topic_qos(): the Ownership policy is now copied.
- The optimization of publisher-side content filtering now applies to durable
data in addition to newly written data samples.
- As with versions before 3.2, the DCPSInfoRepo object reference is allowed to
fail to resolve. If it fails, the current operation can be re-tried at a
later time when the DCPSInfoRepo server is available.
- Added a new option for per-domain default transport configurations.
- Corrected IDL string constants for QoS policy names which were wrong in the
DDS spec (GROUPDATA and TRANSPORTPRIORITY ..._QOS_POLICY_NAME). These are
not used anywhere in OpenDDS.
========================================================================
Version 3.3 of OpenDDS.
- If an instance of a transport can't be set up, an exception is thrown so
that different configuration parameters can be attempted by the user.
- Corrected the mapping of Priority QoS to DiffServ CodePoint DS subfield.
- For thread-per-connection send, if no explicit scheduling policy has been
configured, OpenDDS will now inherit the current thread's policy/priority.
- Fixed a possible deadlock of RTPS discovery on Windows.
- Added non-blocking I/O setting to tcp sockets, VxWorks 6.4 required it.
- Fixed various bugs in deadline and ownership QoS.
- Improved multicast transport's robustness during handshaking when many
connections are set up at the same time, and also allow for multicast
to skip over recieved datagrams that don't have the expcted header values.
- Multicast transport configuration can now specify a local network interface
which will be used to join the multicast group.
- The support for the generation of the DDS4CCM needed LEM library has been
moved to CIAO DDS4CCM. This removed the optional dependency on CIAO.
========================================================================
Version 3.2 of OpenDDS.
- Added a new transport type: Shared Memory
Use "shmem" as the short name (in place of "tcp", "udp", "multicast", etc.).
See dds/DCPS/transport/shmem/ShmemInst.h for configurable parameters.
- The udp transport now supports setting IP DSCP (DiffServ CodePoint) based on
the writer's TRANSPORT_PRIORITY QoS value.
- Fixed bugs in udp and multicast transports, including reassembly of fragments.
- Made several changes in order to support CIAO 1.1.2 with DDS4CCM. From
this version DDS4CCM has support for OpenDDS as DDS vendor. Check the CIAO
release notes for details on what has been ported.
- Added new QOS_XML library with which QoS settings can be done through an XML
file. Used at this moment by the CIAO DDS4CCM implementation.
- Implemented rejection of samples due to exceeding max_instances and
max_samples.
- Made the RTPS discovery and transport code more robust.
- Refactored InfoRepo-based discovery into its own library. This reduces the
dependency on TAO such that certain TAO libraries will no longer be loaded
unless they are needed for InfoRepo-based discovery.
- For IDL files that only contain local interfaces, the generation of
server-side TAO code was suppressed. The suppression applies to DdsDcps*.idl.
This means, for example, that code that was including DdsDcpsSubscriptionS.h
needs to be changed to include DdsDcpsSubscriptionC.h.
- To reduce library size, OpenDDS can now be conditionally compiled to exclude
profiles discussed in the Compliance section of the DDS spec. See
section 1.3.3 in the Developer's Guide for more information.
========================================================================
Version 3.1 of OpenDDS.
- This release includes the initial implementation of DDS Interoperability
in OpenDDS, using the DDS-RTPS spec v2.1 from the OMG (formal/2010-11-01).
RTPS support in OpenDDS consists of two main features:
- A pluggable transport implementation, known as "rtps_udp" because it
implements the UDP PSM of the DDS-RTPS spec. This is a peer of the
existing OpenDDS-native transports: "tcp", "udp", and "multicast".
- A new discovery mechanism for RTPS's distributed discovery. This can
replace the DCPSInfoRepo in existing OpenDDS deployments.
Neither of these features is enabled by default. See the OpenDDS Developer's
Guide chapter 7 for configuration details. Also, note that not every OpenDDS
feature (for example, certain QoS values) is supported with RTPS in the
initial implementation. These exceptions are documented in the Developer's
Guide sections 7.3.3 and 7.4.5.5.
- Changed set_qos() of DataWriter, DataReader, Publisher and Subscriber so
when provided a QoS value incompatible with an existing association, that the
value will be changed, association will be broken, and RETCODE_OK returned.
Previously, if any association would be broken, no change would take place
and false would be returned. New version is compatible with DDS spec.
- OpenDDS udp transport enhancements:
- Added send_buffer_size and rcv_buffer_size parameters to the udp
transport configuration.
- The default local address will use DNS host names instead of IP
addresses.
- Added support for IPv6 when ACE is built with IPv6 support.
- OpenDDS multicast transport enhancements:
- Added a configuration parameter "async_send" (defaults to false)
that will send multicast datagrams using async I/O if supported
by the platform. As of now this is only implemented on Windows.
It could be extended to Unix aio_*() functions in theory, but these
are generally not preferred and the regular socket functions are
sufficiently fast.
- Removed DataReaderQosExt from DdsDcpsSubscriptionExt.idl. This was only
being used to provide a non-standard-compliant backwards-compatibility
setting to get the DURABILITY QoS behavior matching that of OpenDDS v1.2
and earlier. It was not being used in any OpenDDS code.
========================================================================
Version 3.0.1 of OpenDDS.
- The DCPSInfoRepo reassociates Built in Topic connections for existing
datareaders and datawriters when restarted from persistence.
- The opendds_idl compiler will now print a warning about not including TAO's
orb.idl file when a file named orb.idl is included.
- Fixed a bug where the timeout for passive_connect_duration was ignored.
- Fixed multiple bugs in fragmentation/reassembly used for udp and multicast.
- Fixed multicast loopback and session re-use problems.
- Fixed a bug with memory management for the TransportCustomizedElement
used in publisher-side content filtering.
- New example Messenger.minimal - which is like messenger, but streamlined
for new users to understand the whole easier.
========================================================================
Version 3.0 of OpenDDS.
- Transport configuration has undergone a major redesign and any existing
transport application code or transport configuration files need to be
updated. See the Developer's Guide for details of the design. See
$DDS_ROOT/docs/OpenDDS_3.0_Transition.txt for a description on how
to migrate your applications to the OpenDDS 3.0 design. As a part of
this design OpenDDS gains the following capabilities:
- Most applications can do all transport configuration via
configuration files (no transport source code required).
- Individual writers and readers can now support multiple
transports.
- The simpleTcp transport was renamed to tcp (the directory containing
its source code was also renamed).
- The udp transport no longer required a local_address when being
configured. If not specified, the property defaults to a value
selected by the operating system (similar to the tcp transport).
- Details of the OpenDDS Modeling SDK changes in this release are documented
in the Eclipse-based help, see OpenDDS Modeling SDK Guide -> Getting
Started -> Introduction to the OpenDDS Modeling SDK.
- First release of OpenDDS Real-Time Data (RTD) for Excel an Excel Add-in
and RTD Server. It allows visualization of an operating OpenDDS system
from within Excel. It gives a tree view of a repository that mirrors the
stand-alone OpenDDS Monitor application's tree view, but with the
additional capabilities to automatically restart monitoring of a repository
when a saved workbook is opened, monitoring multiple repositories
simultaneously, and snapshot a repository monitor tree view.
- Wireshark dissector improvements include removal of the restriction
that inforepo IOR be placed in a special file. Dissector config
files can now be generated by opendds_idl.
- The monitor tool has a new view which is an alternate to the Graphviz
view. The Node view uses Qt gui elements to model the OpenDDS system.
Users can manipulate Node view graphs before saving them to PNG files.
========================================================================
Version 2.4 of OpenDDS.
- This will be the final release of OpenDDS that will build with the current
patch level of TAO 1.5a. This release is compatible with (the current patch
levels of) TAO 1.5a, and 1.6a, as well as the current DOC Group release.
Future releases will be compatible with TAO 1.6a and the DOC group -- see
the README file for details on TAO versions.
- The implementation of ContentFilteredTopics now defaults to evaluating
the filter expression at the publisher so that data samples which would
be ignored by the subscriber can be dropped before getting to the transport.
This feature can be turned off with "-DCPSPublisherContentFilter 0" or the
equivalent setting in the [common] section of the configuration file.
When using non-default DEADLINE or LIVELINESS QoS policy values, special
consideration needs to be given to how these "missing" samples impact the
QoS behavior, see the document in docs/design/CONTENT_SUBSCRIPTION.
- DisjointSequence, an internal class used to track sequence numbers for both
multicast and wait_for_acks, was enhanced to store contiguous ranges instead
of individual values. Thus it will not require so much memory in cases where
there are gaps in the sequence numbers.
- Began implementing the DDS Interoperabiltiy specification aka "RTPS"
(see OMG formal/2010-11-01). Changes in this release include fragmentation
and reassembly for udp and multicast, 64-bit sequence numbers, and the ability
to transmit only the key fields for the instance-control messages (register,
unregister, dispose).
- The monitor tool, an instrumentation viewer application for OpenDDS,
has new options for generating and viewing directed graphs. The tool
generates Graphviz-readable .dot files, manages converting the files to
representative .png files, and displays the generated .png files in its
GUI. Monitor executes Graphviz command-line tools in a separate process.
There are no compile-time or run-time dependencies on Graphviz. The
monitor tool will run on systems without Graphviz installed but will
not be able to generate .png files.
- Enhanced the Wireshark packet dissector to inspect SAMPLE_DATA message
contents. This requires a data model expressed in an .ini file (documented
in tools/dissector/README). In order to associate a SAMPLE_DATA message
with a type, the publication ID is harvested from InfoRepo GIOP messages.
In order to detect InfoRepo GIOP messages, the IOR for the InfoRepo must
be written in a file called "IOR.txt" in the current working directory when
wireshark is invoked.
- Enhancements and fixes of OpenDDS Modeling SDK. Version: 1.1.0.
* Topic types from a DcpsLib shown in Project Explorer can be
dragged to diagram for another DcpsLib. This allows the same
Topic to be used in multiple DcpsLibs.
* For more, see the Eclipse online help, under "OpenDDS Modeling
SDK Guide > Getting Started"
- Enhancements and fixes of OpenDDS Modeling SDK. Version: 1.0.1.
* For more, see the Eclipse online help, under "OpenDDS Modeling
SDK Guide > Getting Started"
========================================================================
Version 2.3 of OpenDDS.
- First release of the OpenDDS Modeling SDK, a modeling tool that can be
used by the application developer to define the required middleware
components and data structures as a UML model and then generate the
code to implement the model using OpenDDS. The generated code can
then be compiled and linked with the application to provide seamless
middleware support to the application. UML models are manipulated using
a graphical editor based on Eclipse. See the OpenDDS Developer's Guide
<http://download.ociweb.com/OpenDDS/OpenDDS-latest.pdf> for
installation instructions.
- DCPSInfoRepo no longer requires an -ORBSvcConf argument when using
Built-In Topics. The DCPSInfoRepo process will take care of loading
SimpleTCP (if it's not already loaded).
- Fixed method signature of DataWriter::register_instance_w_timestamp()
to have two arguments per the latest spec, not three.
- "make install" is now available on platforms using GNU Make and when
building with OCI TAO 1.6a or DOC Group TAO.
- Added support for Microsoft Visual Studio 2010 (vc10).
========================================================================
Version 2.2 of OpenDDS.
- Completed the implementation of the Content-Subscription Profile (which
was begun in version 1.3 of OpenDDS). This includes:
- QueryCondition (previously OpenDDS had a partial implementation)
- ContentFilteredTopic
- MultiTopic
The content-subscription profile can be disabled at compile-time in order
to reduce footprint: set the MPC feature "content_subscription" to 0.
- The code generation tools for OpenDDS have changed in this release. The
Perl script "dcps_ts.pl" is no longer used and instead the OpenDDS IDL
Compiler "opendds_idl" takes its place. opendds_idl also includes the
functionality which used to be in tao_idl and enabled with -Gdcps.
Existing applications that use MPC do not need to make any changes unless
they happen to depend on some rarely-used arguments to dcps_ts.pl. See the
OpenDDS Developer's Guide for the list of arguments accepted by opendds_idl.
- Renamed odds_repoctl command to repoctl. Add a decorator if needed when
installing external to the OpenDDS directories.
- Renamed odds_monitor command to monitor. Add a decorator if needed when
installing external to the OpenDDS directories.
- Renamed Wireshark dissector 'odds' library to 'OpenDDS_Dissector'.
The source directory was renamed from $DDS_ROOT/tools/odds_dissector
to $DDS_ROOT/tools/dissector.
- Fixed transport so it now allows associations between datareaders and
datawriters attached to the same transport to work.
- Fixed a bug that causes samples larger than 64K to not work correctly with
the SimpleTCP transport.
- Added nak_delay_intervals and nak_max configuration options for reliable
multicast to help reduce naks.
- Added support for Ownership qos.
- Added support for GROUP presentation.
- Changed the default DataWriterQos reliability max_blocking_time from infinite
to be 100ms to be consistent with spec 1.2.
- A new "configure" script is available to assist with setting up prerequisites
for OpenDDS compilation, including optionally downloading ACE+TAO. See the
INSTALL file for details.
========================================================================
Version 2.1.3 of OpenDDS.
- Various fixes for memory management issue on transport framework.
- Fixed duplicate message issue caused by a lost link.
- Memory leak fixes.
- Fixed deadlocks on reliable multicast transport during association
and shutdown periods.
- Improved reliable multicast transport and reduced nak overflow.
- Extended the capabilities of the OpenDDS-Bench performance test
framework. This consists mostly of expanded pre-configured tests as
well as additional execution and plotting scripts. The user guide at
performance-tests/Bench/doc/user_guide.html contains the details.
- Masked interrupts in threads created by OpenDDS to avoid failures
while in system calls.
Example: ERROR: ACE::handle_write_ready return -1 while waiting
to unclog. handle_write_ready: Interrupted system call
- Added support to set the TTL for multicast transports.
========================================================================
Version 2.1.2 of OpenDDS.
* This is a bugfix release to account for issues introduced by the
previous version.
New to this version are the following changes:
- Various bugfixes for locking issues during sample removal.
- Fixed a bug in obtain_buffer() that did not return the TIMEOUT error
code when max_blocking_time is 0 or a very small period.
- Fixed a deadlock in the new IP multicast transport caused when data
is received while a reliable session is handshaking.
- Fixed an issue which caused spurious synch threads to be created for
connectionless transports (i.e. UDP/IP, IP multicast).
- Enhanced the experimental UDP/IP transport to support multiplexing
samples to unique endpoints rather than unique entities.
========================================================================
Version 2.1.1 of OpenDDS.
* This is a bugfix release to account for issues introduced by the
previous version.
New to this version are the following changes:
- Various bugfixes have been applied to the new IP multicast transport
and the Extensible Transport Framework (ETF) to improve stability.
- Added IDL for ContentFilteredTopic and MultiTopic, but they are not yet
implemented (operations will return NULL or RETCODE_UNSUPPORTED).
- A Wireshark 1.2.x compatible dissector is included in this release.
See $DDS_ROOT/tools/odds_dissector/README for details.
========================================================================
Version 2.1 of OpenDDS.
New to this version are the following changes:
- The OpenDDS-Bench performance testing framework has been enhanced to
include the following:
* extended to allow fixed rate testing;
* added predefined latency test configuration files;
* added data reduction scripts to post process test results;
* added data visualization scripts using gnuplot to create charts
from reduced test data.
Documentation is located at: $DDS_ROOT/performance-tests/Bench/doc.
- The monitor library introduces a new instrumentation mechanism for
reporting OpenDDS run-time information. This information is
intended to supplement that provided by the standard-defined
Built-In-Topics. See $DDS_ROOT/dds/monitor/README for further
details.
- A new instrumentation application is available to view executing
OpenDDS service Entities. This is located at: $DDS_ROOT/tools/odds_monitor.
- The opendds_repo_ctl tool has been moved from $DDS_ROOT/dds/tools to
$DDS_ROOT/tools. The name has also been changed to odds_repoctl to
reflect changes in naming conventions in this release.
- A new multicast transport is available which replaces the older
ReliableMulticast and SimpleMcast transports. For a detailed description
of the design, configuration, known issues, and potential enhancements,
see: $DDS_ROOT/docs/html/multicast/multicast.html.
- A new udp transport is available which replaces the older SimpleUdp
transport. Like SimpleUdp, udp provides best-effort reliablity only;
its use should be considered experimental.
- Numerous bugs in the Extensible Transport Framework (ETF) have been
addressed to improve the stability of new and existing transports.
- Formal ranges of DDS::DomainId_t values are now specified; users have
full access to all DomainId values between 0x0 and 0x7fffffff. All other
values are reserved for use by the implementation.
=========================================================================
Version 2.0.1 of OpenDDS.
* This is a bugfix release to account for issues introduced by the 2.0
integration process. No new features have been added in this release.
New to this version are the following changes:
- Bugfixes for STLport support using Sun CC compilers.
- Corrected default ReliablityQoS policy for DataWriter entities.
- Bugfixes to Java language bindings including TAO_IDL interface changes
introduced in DOC TAO 1.7.4 and incorrectly generated project files.
=========================================================================
Version 2.0 of OpenDDS.
* This is the first release of OpenDDS that conforms to the minimum
compliance profile as documented in formal/07-01-01 (version 1.2).
Near-complete support for the persistence profile and initial support
for the content-subscription profile is also provided in this release.
New to this version are the following changes:
- Updated support for DataWriter::unregister() and DataWriter::dispose()
to properly release resources after all samples in a marked instance
are removed.
- Implemented Publisher::wait_for_acknowledgments() as defined in
formal/07-01-01.
- Fixed an issue in QueryCondition where applying filters on non-valid
data samples caused a SEGV; these samples are now implicitly filtered
out.
- Implemented PRESENTATION QoS policy as defined in formal/07-01-01.
Currently, GROUP access is not supported.
- Implemented MANUAL_BY_TOPIC and MANUAL_BY_PARTICIPANT LIVELINESS QoS
policy kinds.
- Implemented BY_SOURCE_TIMESTAMP DESTINATION_ORDER QoS policy kind.
Samples may now be ordered based on reception or source times on a per
instance basis.
- Implemented ENTITY_FACTORY auto_enable support in formal/07-01-01.
Entities may now be enabled manually by setting this value to false.
- Implemented WRITER_DATA_LIFECYCLE as defined in formal/07-01-01.
Instances will now be properly unregistered/disposed when a DataWriter
is deleted.
- Implemented READER_DATA_LIFECYCLE as defined in formal/07-01-01.
- Implemented TIME_BASED_FILTER as defined in formal/07-01-01.
- create_*() functions now take a StatusMask argument. A new constant
named OpenDDS::DCPS::DEFAULT_STATUS_MASK has been introduced as a
convenience to indicate interest in all status changes.
- Implemented the following new methods on DomainParticipant as defined
in formal/07-01-01:
* get_discovered_participants()
* get_discovered_participant_data()
* get_discovered_topics()
* get_discovered_topic_data()
- Constant name changes:
* PUBLICATION_MATCH_STATUS => PUBLICATION_MATCHED_STATUS
* DURATION_INFINITY_SEC => DURATION_INFINITE_SEC
* DURATION_INFINITY_NSEC => DURATION_INFINITE_NSEC
* TIMESTAMP_INVALID_SEC => TIME_INVALID_SEC
* TIMESTAMP_INVALID_NSEC => TIME_INVALID_NSEC
- Removed constants:
* TRANSPORTPRIORITY_QOS_POLICY_NAME
- Type name changes:
* StatusKindMask => StatusMask
* SubscriptionMatchStatus => SubscriptionMatchedStatus
* PublicationMatchStatus => PublicationMatchedStatus
- Removed types:
* SampleStateSeq
* ViewStateSeq
* OctetSeq
- Other type changes:
* BuiltinTopicKey_t is now a struct containing an array rather
than a bare array type. This allows passing a BuiltinTopicKey_t
by reference.
* Ownership is now indicated in DataReaderQos and DataWriterQos as
well as PublicationBuiltinTopicData and SubscriptionBuiltinTopicData.
* Removed sevice_cleanup_delay from DurabilityQosPolicy.
- Method name changes:
* register()/_cxx_register() => register_instance()
* register_w_timestamp() => register_instance_w_timestamp()
* unregister() => unregister_instance()
* unregister_w_timestamp() => unregister_instance_w_timestamp()
* on_subscription_match() => on_subscription_matched()
* on_publication_match() => on_publication_matched()
- Other method changes:
* set_qos(), get_qos(), get_*_status() and assert_liveliness() now
return error codes as specified in formal/07-01-01.
* Subscriber::get_datareaders() reader parameter has changed from out
to inout.
=========================================================================
Version 1.3 of OpenDDS.
* This will be the final release of OpenDDS that will build with the current
patch level of TAO 1.4a. This release is compatible with (the current patch
levels of) TAO 1.4a, 1.5a, and 1.6a, as well as the current DOC Group
beta/micro release. Future releases will be compatible with TAO 1.5a, 1.6a
and the DOC group -- see the README file for details on TAO versions.
New to this version are the following changes:
- Implemented the Communication Status entity structures and behaviors to
conform with the version 1.2 specification (formal/07-01-01). This
includes member name changes and additions to LivelinessChangedStatus;
modifying and extending the SampleRejectedStatusKind enumeration; and,
adding new members to the PublicationMatchStatus and
SubscriptionMatchStatus structures.
- Implemented the TRANSPORT_PRIORITY Quality of service policy using the
policy value to set thread priorities and DiffServ codepoint values.
The current implementation does not honor the Changeable behavior of
the policy. Only the intially established policy value is honored for
any given DataWriter Entity. Thread priorities are not currently set
on Windows systems.
- Implemented the LATENCY_BUDGET Quality of service policy as a
monitoring feature with an extended listener callback for exceeded
budget values. Statistics for latency are made available via an
OpenDDS-specific extended API as well.
- Implemented the ReadCondition interface and associated operations
on the DataReader (such as read_w_condition).
- Implemented the QueryCondition interface, but only queries of the form
"ORDER BY a[, b, c...]" have any effect. In other words, it's a mechanism
that controls the order of the data-set received from any given read or
take operation. The ORDER BY fields can be either primitive types
(including strings) or primitive types in nested structs (using a.b).
- Corrected a bug in the LIFESPAN QoS implementation where the Topic QoS
was used. Now the DataWriter QoS takes effect.
- The PARTITION QoS policy now accepts character class wildcards using [].
- Corrected a bug in the PARTITION QoS implementation where the default
QoS would not match against the '*' wildcard.
- The DURABILITY QoS implementation was corrected so that readers requesting
the VOLATLIE kind will not receive historic samples from writers. Since
there were some use-cases for the old behavior, it is available through an
OpenDDS-specific interface -- see $DDS_ROOT/dds/DdsDcpsSubscriptionExt.idl.
- When the writer's DURABILITY QoS is PERSISTENT, the format of the
data stored on the filesystem has changed. Instead of a single file in the
current working directory, a directory is now used. This is configurable
using the option -DCPSPersistentDataDir.
- A Java Message Service 1.1 (JMS) provider built on top of OpenDDS is now
available in $DDS_ROOT/java/jms. JMS Topics are supported (not queuing).
See the README in that directory for more info.
- The $DDS_ROOT/bin/federation utility has been renamed to opendds_repo_ctl
and now supports shutting down a remote non-federated DCPSInfoRepo process.
- Deleting a DataWriter from a Publisher now blocks until pending samples have
been delivered by the underlying transport. By default, the DataWriter will
block indefinitely. To change the default blocking behavior, you may
specify a number of seconds to block with the -DCPSPendingTimeout option.
- Instance handles are now compliant with version 1.2 of the DDS
specification. Additionally, the contains_entity and get_instance_handle
operations have been implemented.
- Implemented DataWriter::wait_for_acknowledgments() from formal/07-01-01.
- Added support for Windows Mobile 6 (WinCE) Standard SDK, and ACE_USES_WCHAR
builds in general. See docs/design/wchar.txt.
=========================================================================
Version 1.2 of OpenDDS.
New to this version are the following changes:
- Implemented the WaitSet, GuardCondition, and StatusCondition interfaces
from the OMG DDS specification.
- Implemented DomainParticipant::get_current_time() from formal/07-01-01.
- Added the ability for using multiple repositories to provide redundant
service metadata management.
The ability to federate repositories and redirect applications to
attach to a new repository in the event a repository fails or becomes
unreachable. This is an experimental feature.
- Removed requirement for repository domain specification files.
Repositories will manage DomainParticipants and their contained
Entities in any domain without requiring the domain to be prespecified
in a configuration file. This removes the '-d' command line argument
from the repositories as well.
- Internal service Entity identifiers have been expanded to 128 bits.
These internal identifiers were previously 32 bits. The 128 format
follows the format of OMG Specification formal/08-04-09 (The Real-time
Publish-Subscribe Wire Protocol DDS Interoperability Wire Protocol
Specification, Version 2.0) GUID_t unique identifier type.
OpenDDS places the identifier value for the DataWriter Entity of a
publication on the wire to identify the source of data samples. This
means that this version of OpenDDS WILL NOT INTEROPERATE with previous
versions since the 128 values are not compatible with the previous 32
bit values.
- Java Bindings for OpenDDS
See $DDS_ROOT/java/README, $DDS_ROOT/java/INSTALL, $DDS_ROOT/java/FAQ
- dcps_ts.pl changes
Modified this script to create a single idl, header, and source file
no matter how many types are contained within the input idl file. This
allows the output file names to be based upon the input file name (instead
of the types found in the idl file). Users of prior OpenDDS versions can
use the script $DDS_ROOT/bin/update_dcps.pl to assist with this transition.
Added a command line argument to allow an output directory to be
specified. All output files will be placed into this directory if
present. They will continue to be placed in the current directory if
this argument is not present.
- DCPSInfoRepo changes
A new library has been introduced (libDCPSInfoRepoServ) which provides
the neccessary hooks for running the DCPSInfoRepo within another process.
For example usage, see: $DDS_ROOT/dds/InfoRepo/DCPSInfoRepo.cpp.
- Fixed bug in DCPSInfoRepo that did not re-evaluate the compatibility and
associations when QoS change is made.
- Fixed bugs that affected connection establishment.
Fixed DataWriterImpl to handle the case that remove_association is called
before fully_associated is called.
Fixed a race condition that connection delay deletion removes new assocaitions.
Corrected fully association ack verification to fix issues when multiple
associations of a datalink are added simultaneously.
- Added datalink_release_delay and removed keep_link configuration.
The datalink_release_delay is the delay for datalink release after no
associations. It defaults to 10 seconds. This is to fix disconnect
problem happened when removing and adding association related to
same datalink during short period.
Removed keep_link which can be replaced with a big value of
datalink_release_delay.
- Fixed a potential deadlock in reliable multicast transport.
=========================================================================
Version 1.1 of OpenDDS.
New to this version are the following changes:
- Added support for PARTITION QoS policy.