RTI Connext Java API  Version 5.1.0
DestinationOrderQosPolicy Class Reference

Controls how the middleware will deal with data sent by multiple com.rti.dds.publication.DataWriter entities for the same instance of data (i.e., same com.rti.dds.topic.Topic and key). More...

Inheritance diagram for DestinationOrderQosPolicy:
QosPolicy

Public Attributes

DestinationOrderQosPolicyKind kind
 Specifies the desired kind of destination order.
 
final Duration_t source_timestamp_tolerance
 <<eXtension>> Allowed tolerance between source timestamps of consecutive samples.
 
- Public Attributes inherited from QosPolicy
final QosPolicyId_t id
 The ID of this QoS policy.
 
final String policy_name
 The name of this QoS policy.
 

Additional Inherited Members

- Public Member Functions inherited from Struct
abstract boolean equals (Object obj)
 
abstract int hashCode ()
 
String toString ()
 
- Protected Member Functions inherited from Struct
 Struct ()
 
abstract void pull_from_nativeI (long native_status)
 
abstract void push_to_nativeI (long native_status)
 

Detailed Description

Controls how the middleware will deal with data sent by multiple com.rti.dds.publication.DataWriter entities for the same instance of data (i.e., same com.rti.dds.topic.Topic and key).

Entity:
com.rti.dds.topic.Topic, com.rti.dds.subscription.DataReader, com.rti.dds.publication.DataWriter
Status:
com.rti.dds.infrastructure.StatusKind.StatusKind.OFFERED_INCOMPATIBLE_QOS_STATUS, com.rti.dds.infrastructure.StatusKind.StatusKind.REQUESTED_INCOMPATIBLE_QOS_STATUS
Properties:
RxO = YES
Changeable = UNTIL ENABLE

Usage

When multiple DataWriters send data for the same topic, the order in which data from different DataWriters are received by the applications of different DataReaders may be different. So different DataReaders may not receive the same "last" value when DataWriters stop sending data.

This QoS policy controls how each subscriber resolves the final value of a data instance that is written by multiple com.rti.dds.publication.DataWriter entities (which may be associated with different com.rti.dds.publication.Publisher entities) running on different nodes.

The default setting, com.rti.dds.infrastructure.DestinationOrderQosPolicyKind.DestinationOrderQosPolicyKind.BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS, indicates that (assuming the OWNERSHIP_STRENGTH policy allows it) the latest received value for the instance should be the one whose value is kept. That is, data will be delivered by a com.rti.dds.subscription.DataReader in the order in which it was received (which may lead to inconsistent final values).

The setting com.rti.dds.infrastructure.DestinationOrderQosPolicyKind.DestinationOrderQosPolicyKind.BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS indicates that (assuming the OWNERSHIP_STRENGTH allows it, within each instance) the source_timestamp of the change shall be used to determine the most recent information. That is, data will be delivered by a com.rti.dds.subscription.DataReader in the order in which it was sent. If data arrives on the network with a source timestamp that is later than the source timestamp of the last data delivered, the new data will be dropped. This 'by source timestamp' ordering therefore works best when system clocks are relatively synchronized among writing machines.

When using com.rti.dds.infrastructure.DestinationOrderQosPolicyKind.DestinationOrderQosPolicyKind.BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS, not all data sent by multiple com.rti.dds.publication.DataWriter entities may be delivered to a com.rti.dds.subscription.DataReader and not all DataReaders will see the same data sent by DataWriters. However, all DataReaders will see the same "final" data when DataWriters "stop" sending data. This is the only setting that, in the case of concurrently publishing com.rti.dds.publication.DataWriter entities updating the same instance of a shared-ownership topic, ensures all subscribers will end up with the same final value for the instance.

This QoS can be used to create systems that have the property of "eventual consistency." Thus intermediate states across multiple applications may be inconsistent, but when DataWriters stop sending changes to the same topic, all applications will end up having the same state.

Compatibility

The value offered is considered compatible with the value requested if and only if the inequality offered kind >= requested kind evaluates to 'TRUE'. For the purposes of this inequality, the values of com.rti.dds.infrastructure.DestinationOrderQosPolicy.kind are considered ordered such that com.rti.dds.infrastructure.DestinationOrderQosPolicyKind.DestinationOrderQosPolicyKind.BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS < com.rti.dds.infrastructure.DestinationOrderQosPolicyKind.DestinationOrderQosPolicyKind.BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS

Member Data Documentation

Specifies the desired kind of destination order.

[default] com.rti.dds.infrastructure.DestinationOrderQosPolicyKind.DestinationOrderQosPolicyKind.BY_RECEPTION_TIMESTAMP_DESTINATIONORDER_QOS,

final Duration_t source_timestamp_tolerance

<<eXtension>> Allowed tolerance between source timestamps of consecutive samples.

When a com.rti.dds.publication.DataWriter sets com.rti.dds.infrastructure.DestinationOrderQosPolicyKind to com.rti.dds.infrastructure.DestinationOrderQosPolicyKind.DestinationOrderQosPolicyKind.BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS, when when writing a sample, its timestamp must not be less than the timestamp of the previously written sample. However, if it is less than the timestamp of the previously written sample but the difference is less than this tolerance, the sample will use the previously written sample's timestamp as its timestamp. Otherwise, if the difference is greater than this tolerance, the write will fail.

When a com.rti.dds.subscription.DataReader sets com.rti.dds.infrastructure.DestinationOrderQosPolicyKind to com.rti.dds.infrastructure.DestinationOrderQosPolicyKind.DestinationOrderQosPolicyKind.BY_SOURCE_TIMESTAMP_DESTINATIONORDER_QOS, the com.rti.dds.subscription.DataReader will accept a sample only if the difference between its source timestamp and the reception timestamp is no greater than this tolerance. Otherwise, the sample is rejected.

[default] 100 milliseconds for com.rti.dds.publication.DataWriter, 30 seconds for com.rti.dds.subscription.DataReader


RTI Connext Java API Version 5.1.0 Copyright © Mon Feb 3 2014 Real-Time Innovations, Inc