You are here: Compatibility > Code Compatibility

Code Compatibility

General Information (All Releases)

The Connext DDS core uses an API that is an extension of the OMG Data Distribution Service (DDS) standard API, version 1.2. RTI strives to maintain API compatibility between versions, but will conform to changes in the OMG DDS standard.

The Connext DDS core primarily consists of a library and a set of header files. In most cases, upgrading simply requires you to recompile your source using the new header files and link the new libraries. In some cases, minor modifications to your application code might be required; any such changes are noted in this document.

RTI allows you to define the data types that will be used to send and receive messages. To create code for a data type, Connext DDS includes RTI Code Generator (also known as rtiddsgen). For input, RTI Code Generator takes a data-type description (in IDL, XML, XSD, or WSDL format); RTI Code Generator generates header files (or a class in Java) that can be used to send and receive data of the defined type. It also generates code that takes care of low-level details such as transforming the data into a machine-independent representation suitable for communication.

While this is not the common case, some upgrades require you to regenerate the code produced by RTI Code Generator. The regeneration process is very simple; you only need to run the new version of RTI Code Generator using the original input IDL file. This process will regenerate the header and source files, which can then be compiled along with the rest of your application.

Release-Specific Information for Connext DDS 5.x

This section points out important differences in Connext DDS 5.x compared to 4.5f that may require changes on your part when upgrading from 4.5f (or lower) to 5.x

Required Change for Building with C++ Libraries for QNX Platforms—New in Connext DDS 5.0.0

For QNX architectures, in release 5.x: The C++ libraries are now built without -fno-rtti and with -fexceptions. To build QNX architectures with release 5.x, you must build your C++ applications without -fno-exceptions in order to link with the RTI libraries. In summary:

Do not use -fno-exceptions when building a C++ application or the build will fail. It is not necessary to use -fexceptions, but doing so will not cause a problem.

It is no longer necessary to use -fno-rtti, but doing so will not cause a problem.

Changes to Custom Content Filters API

Starting with Connext DDS 5.0.0, the ContentFilter’s evaluate() function now receives a new ‘struct DDS_FilterSampleInfo *’ parameter that allows it to filter on meta-data.

The evaluate() function of previous custom filter implementations must be updated to add this new parameter.

Changes to FooDataWriter::get_key_value()

Starting with Connext DDS 5.2.0, the return value of the function FooDataWriter::get_key_value() has changed from DDS_RETCODE_ERROR to DDS_RETCODE_BAD_PARAMETER if the instance handle passed to the function is not registered.

This change in behavior was done to align with the DDS specification (RTI Issue ID CORE-6096).

Changes in Generated Type Support Code in Connext DDS 5.0.0

The rtiddsgen-generated type-support code for user-defined data type changed in 5.0.0 to facilitate some new features. If you have code that was generated with rtiddsgen 4.5 or lower, you must regenerate that code using the version of rtiddsgen provided with this release.

Changes in Generated Type Support Code in Connext DDS 5.1.0

The rtiddsgen-generated type-support code for user-defined data type changed in 5.1.0 to facilitate some new features. If you have code that was generated with rtiddsgen 5.0.0 or lower, you must regenerate that code using the version of rtiddsgen provided with this release.

New Default Value for DomainParticipant Resource Limit, participant_property_string_max_length

Starting with Connext DDS 5.1.0, the default value of participant_property_string_max_length in the DomainParticipantResourceLimitsQosPolicy has been changed from 1024 characters to 2048 to accommodate new system properties (see Section 8.7, System Properties, in the RTI Connext DDS Core Libraries User’s Manual).

New Default Value for DomainParticipant’s participant_name.name

Starting with Connext DDS 5.1.0, the default value for participant_qos.participant_name.name has been changed from the string “[ENTITY]” to NULL to provide consistency with the default name of other entities such as DataWriters and DataReaders.

Constant DDS_AUTO_NAME_ENTITY no Longer Available

Starting with Connext DDS 5.1.0, the constant DDS_AUTO_NAME_ENTITY, which was used to assign the name “[ENTITY]” to a participant, has been removed. References to DDS_AUTO_NAME_ENTITY must be removed from Connext DDS applications.

Changes to Time_t and Duration_t Methods

Starting with Connext DDS 5.2.0, the signatures for some of the Time_t and Duration_t methods have changed:

Traditional C++:

Old: from_micros(DDS_UnsignedLong microseconds);
New: from_micros(DDS_UnsignedLongLong microseconds);

Old: from_millis(DDS_UnsignedLong milliseconds);
New: from_millis(DDS_UnsignedLongLong milliseconds);

Old: from_nanos(DDS_UnsignedLong nanoseconds);
New: from_nanos(DDS_UnsignedLongLong nanoseconds);

Old: from_seconds(DDS_Long seconds);
New: from_seconds(DDS_UnsignedLong seconds);

Java:

Old: from_seconds(long seconds)
New: from_seconds(int seconds)

.NET:

Old: from_micros(long microseconds)
New: from_micros(System::UInt64 microseconds)

Old: from_millis(System::UInt32 milliseconds)
New: from_millis(System::UInt64 milliseconds)

Old: from_nanos(long nanoseconds)
New: from_nanos(System::UInt64 nanoseconds)

Release-Specific Information for RTI Data Distribution Service 4.x, Connext DDS 4.5 and 5.x

Type Support and Generated Code Compatibility

Other API and Behavior Changes

© 2015 RTI