Releases: OpenDDS/OpenDDS
OpenDDS 1.0
Release notes for Version 1.0 of OpenDDS
New to this version are the following changes:
-
This product has been renamed to OpenDDS from "TAO DDS"
Namespace and module names have been changed accordingly, except for a few
cases where we are counting on certain names being generated by the TAO_IDL
compiler. -
The default participant setting for BITs is now "on"
This change was actually part of 0.12 but the release notes were not updated
to include it. Please see the entry with the same title under the "Version
0.12" section below for more details. -
Simplified .mpc and .mpb files
Projects that use DDS no longer need to explicitly list "portableserver" as a
base project. It will be included by the "dcps*" base projects such as
"dcpsexe" and "dcpsexe_with_tcp". Also, an .mpb file is provided for each of
the transport libraries (dcps_tcp.mpb, dcps_unreliable_dgram.mpb,
dcps_reliable_multicast.mpb). -
Supported built-in sequences (the CORBA::*Seq sequences).
Implementation details:
DDS keeps copies of the $TAO_ROOT/tao/_Seq.pidl in
$DDS_ROOT/dds/CorbaSeq directory and renamed to *.idl files.
These idl files are compiled with a new IDL option -Gdcpsonly to
just generate the DDS specific code for built in sequences. The
DDS CORBA::_Seq generated code will include the TAO CORBA::*Seq
generated code so both TAO and DDS functions will be available.When a DDS application contains an idl file that includes
$TAO_ROOT/tao/Seq.pidl, the generated code will include the DDS
specific built in sequences code(under $DDS_ROOT/dds/ directory)
instead of TAO specific built in sequences code(under
$TAO_ROOT/tao/ directory).Notes:
- The idl files in $DDS_ROOT/dds/CorbaSeq directory are internally
used by DDS and CAN NOT be included in your idl files. - Currently the CORBA::AnySeq is not supported since DDS does not
support serialization of Any type data.
- The idl files in $DDS_ROOT/dds/CorbaSeq directory are internally
-
The DDS entities (e.g. DomainParticipant, FooDataReader) have changed from
remote IDL types to local IDL types and the data sequence and info
sequence types have changed from normal IDL sequences to types with extra
functionality required to support zero-copy reads.*** This change requires changes to DDS user code. ***
--- impacts on user code ---
- The ZCSeq and ::TAO::DCPS::SampleInfoZCSeq no longer exist.
The Seq and DDS::SampleInfoSeq have been changed
to support both single-copy reads (as before) and zero-copy reads
(like ZCSeq should have).
Change ::TAO::DCPS::SampleInfoZCSeq to ::DDS::SampleInfoSeq. Change <Foo>ZCSeq to [Modlue::]<Foo>Seq. The default constructor for <Foo>Seq enables zero-copy reads. Constructing a <Foo>Seq(num) with num > 0 enables single-copy reads.
- Listeners will now inherit from DDS::Listner instead of
POA_DDS:: or POA_TAO::DCPS::DataReader/WriterListener and
should inherit as a local object (not a servant). DDS provides a
helper template that adds reference counting. Use of this template
(as shown below) is highly recommended.
for example: class DataReaderListenerImpl : public virtual POA_DDS::DataReaderListener, public virtual PortableServer::RefCountServantBase {...}; will become: class DataReaderListenerImpl : public virtual TAO::DCPS::LocalObject<DDS::DataReaderListener> {...}; but the header and implementation should require no other changes. NOTE: if you are implementing the TAO specific reconnection callbacks, on*disconnected, on_*_reconnected, on_*_lost, on_connection_deleted then you should change inheritance from POA_TAO::DCPS::DataReaderListener to TAO::DCPS::LocalObject<TAO::DCPS::DataReaderListener> and remove inheritance from PortableServer::RefCountServantBase
-
Implemenation reference counting cleanup code is no longer used
For example:
SimpleTypeSupportImpl sts_servant = new SimpleTypeSupportImpl;
PortableServer::ServantBase_var safe_servant = sts_servant;
SimpleTypeSupport_var fts = TAO::DCPS::servant_to_reference (sts_servant); if (::DDS::RETCODE_OK != fts->register_type(dp.in (), MY_TYPE))
becomes:
SimpleTypeSupport_var fts = new SimpleTypeSupportImpl; if (::DDS::RETCODE_OK != fts->register_type(dp.in (), MY_TYPE))
although the old style is discurraged it will still work.
-
Since the DCPS interfaces are now local, there is very little
performance gain to convert from _var to a servant pointer (using
reference_to_servant).For example:
::DDS::DataWriter_var dw =
pub->create_datawriter(topic.in (),
dw_qos,
::DDS::DataWriterListener::_nil());
Test::SimpleDataWriter_var foo_dw = Test::SimpleDataWriter::_narrow(dw.in ()); // This is unnesesary but will still work. // Previously fast_dw was used to increase the // performance of writing samples. Test::SimpleDataWriterImpl* fast_dw = TAO::DCPS::reference_to_servant<Test::SimpleDataWriterImpl> (foo_dw.in ()); Also, a pointer to the servant is no longer needed for making calls on zero-copy read supporting overloaded methods.
- If the user defined DDS type is in a module then the generated types will
also be in that same module.
Given a "Foo" DDS type defined in the module "Test": old new -------- ------------ type Test::Foo Test::Foo sequence FooSeq Test::FooSeq reader FooDataReader Test::FooDataReader writer FooDataWriter Test::FooDataWriter
-
The --module option to dcps_ts.pl is no longer supported.
The module is set as described in point #5 above. -
What did not change.
You may use the following:
_var, _ptr
::_narrrow() // might use this for a listener
::_duplicate()
TAO::DCPS::servant_to_reference()
TAO::DCPS::reference_to_servant()
TAO::DCPS::deactivate() // now a no-op
Note: if you used TAO::DCPS::servant_to_reference(), TAO::DCPS::reference_to_servant(), or TAO::DCPS::deactivate_object for non-DDS interfaces then you may change to: remote_reference_to_servant servant_to_remote_reference deactivate_remote_object --- end of local interface impact to users ---
- Made the sub/pub repo id generated by DCPSInfoRepo to be unique
per DCPSInfoRepo instance instead of being unique per domain.
This would allow multiple domains in the same process(connect
to the same DCPSInfoRepo instance) share the same transport.
- The ZCSeq and ::TAO::DCPS::SampleInfoZCSeq no longer exist.
Using the GitHub "releases" page
Download OpenDDS-1.0.zip (Windows) or OpenDDS-1.0.tar.gz (Linux/Solaris/MacOSX) instead of using the GitHub-generated "source code" links.