Eclipse Cyclone DDS operates in one of three modes:
lax (default). The Eclipse Cyclone DDS accepts some invalid messages and transmits them, which is important for interoperability.
To configure the mode, set Compatibility/StandardsConformance
If there are two Eclipse Cyclone DDS processes with different compliancy modes, the one in the stricter mode will complain about messages sent by the one in the less strict mode.
RTI compatibility issues¶
In lax mode, most topic types should not have significant issues when working across a network.
Disposing of data may cause problems, as RTI DDS leaves out the serialised key value and expects the Reader to rely on an embedded hash of the key value. In the strict modes, Cyclone DDS requires a valid key value to be supplied; in the relaxed mode, it is willing to accept key hash, provided it is of a form that contains the key values in an unmangled form.
If an RTI DDS DataWriter disposes of an instance with a key of which the serialised representation may be larger than 16 bytes, this problem is likely to occur. In practice, the most likely cause is using a key as a string, either unbounded, or with a maximum length larger than 11 bytes. See the DDSI specification for details.
In strict mode, there is interoperation with RTI DDS, but at the cost of very high CPU and network load. This is caused by Heartbeats and AckNacks going back-and-forth between a reliable RTI DDS DataWriter and a reliable Cyclone DDS data Reader. When Cyclone DDS informs the RTI Writer that it has received all data (using a valid AckNack message), the RTI Writer immediately publishes a message listing the range of available sequence numbers and requesting an acknowledgment, which becomes an endless loop.
In addition, there is a difference in interpretation of the meaning of the “autodispose_unregistered_instances” QoS on the Writer. Cyclone DDS aligns with OpenSplice.