RTI Connext Modern C++ API  Version 5.3.1
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
rti::core::policy::DataReaderProtocol Class Reference

<<extension>> Configures DataReader-specific aspects of the RTPS protocol More...

#include <rti/core/policy/CorePolicy.hpp>

Public Member Functions

 DataReaderProtocol ()
 Creates the default policy.
 
DataReaderProtocolvirtual_guid (const rti::core::Guid &the_virtual_guid)
 The virtual GUID (Global Unique Identifier).
 
rti::core::Guid virtual_guid () const
 Getter (see setter with the same name)
 
DataReaderProtocolrtps_object_id (uint32_t the_rtps_object_id)
 The RTPS Object ID.
 
uint32_t rtps_object_id () const
 Getter (see setter with the same name)
 
DataReaderProtocolexpects_inline_qos (bool the_expects_inline_qos)
 Specifies whether this DataReader expects inline QoS with every sample.
 
bool expects_inline_qos () const
 Getter (see setter with the same name)
 
DataReaderProtocoldisable_positive_acks (bool the_disable_positive_acks)
 Whether the reader sends positive acknowledgements to writers.
 
bool disable_positive_acks () const
 Getter (see setter with the same name)
 
DataReaderProtocolpropagate_dispose_of_unregistered_instances (bool the_propagate_dispose_of_unregistered_instances)
 Indicates whether or not an instance can move to the dds::sub::status::InstanceState::not_alive_disposed() state without being in the dds::sub::status::InstanceState::alive() state.
 
bool propagate_dispose_of_unregistered_instances () const
 Getter (see setter with the same name)
 
DataReaderProtocolpropagate_unregister_of_disposed_instances (bool the_propagate_unregister_of_disposed_instances)
 Indicates whether or not an instance can move to the dds::sub::status::InstanceState::not_alive_no_writers() state without being in the dds::sub::status::InstanceState::alive() state.
 
bool propagate_unregister_of_disposed_instances () const
 Getter (see setter with the same name)
 
DataReaderProtocolrtps_reliable_reader (const rti::core::RtpsReliableReaderProtocol &the_rtps_reliable_reader)
 RTPS protocol-related configuration settings for the RTPS reliable reader associated to a dds::sub::DataReader. This parameter only has effect if the reader is configured with dds::core::policy::ReliabilityKind::RELIABLE dds::core::policy::ReliabilityKind.
 
const
rti::core::RtpsReliableReaderProtocol
rtps_reliable_reader () const
 Gets the reliable protocol settings by const reference (see setter)
 
rti::core::RtpsReliableReaderProtocolrtps_reliable_reader ()
 Gets the reliable protocol setting by reference (see setter)
 

Detailed Description

<<extension>> Configures DataReader-specific aspects of the RTPS protocol

DDS has a standard protocol for packet (user and meta data) exchange between applications using DDS for communications. This QoS policy and rti::core::policy::DataReaderProtocol give you control over configurable portions of the protocol, including the configuration of the reliable data delivery mechanism of the protocol on a per DataWriter or DataReader basis.

These configuration parameters control timing, timeouts, and give you the ability to tradeoff between speed of data loss detection and repair versus network and CPU bandwidth used to maintain reliability.

It is important to tune the reliability protocol (on a per dds::pub::DataWriter and dds::sub::DataReader basis) to meet the requirements of the end-user application so that data can be sent between DataWriters and DataReaders in an efficient and optimal manner in the presence of data loss.

You can also use this QoS policy to control how RTI Connext responds to "slow" reliable DataReaders or ones that disconnect or are otherwise lost. See dds::core::policy::Reliability for more information on the per-DataReader/DataWriter reliability configuration. dds::core::policy::History and dds::core::policy::ResourceLimits also play an important role in the DDS reliable protocol.

This QoS policy is an extension to the DDS standard.

Entity:
dds::sub::DataReader
Properties:
RxO = N/A
Changeable = NO

Constructor & Destructor Documentation

rti::core::policy::DataReaderProtocol::DataReaderProtocol ( )
inline

Creates the default policy.

Member Function Documentation

DataReaderProtocol& rti::core::policy::DataReaderProtocol::virtual_guid ( const rti::core::Guid the_virtual_guid)

The virtual GUID (Global Unique Identifier).

The virtual GUID is used to uniquely identify different incarnations of the same dds::sub::DataReader.

The association between a dds::sub::DataReader and its persisted state is done using the virtual GUID.

[default] rti::core::Guid::automatic()

rti::core::Guid rti::core::policy::DataReaderProtocol::virtual_guid ( ) const

Getter (see setter with the same name)

DataReaderProtocol& rti::core::policy::DataReaderProtocol::rtps_object_id ( uint32_t  the_rtps_object_id)

The RTPS Object ID.

This value is used to determine the RTPS object ID of a data reader according to the DDS-RTPS Interoperability Wire Protocol.

Only the last 3 bytes are used; the most significant byte is ignored.

If the default value is specified, RTI Connext will automatically assign the object ID based on a counter value (per participant) starting at 0x00800000. That value is incremented for each new data reader.

A rtps_object_id value in the interval [0x00800000,0x00ffffff] may collide with the automatic values assigned by RTI Connext. In those cases, the recomendation is not to use automatic object ID assigment.

[default] rti::core::policy::WireProtocol::RTPS_AUTO_ID

[range] [0,0x00ffffff]

uint32_t rti::core::policy::DataReaderProtocol::rtps_object_id ( ) const

Getter (see setter with the same name)

DataReaderProtocol& rti::core::policy::DataReaderProtocol::expects_inline_qos ( bool  the_expects_inline_qos)

Specifies whether this DataReader expects inline QoS with every sample.

In RTI Connext, a dds::sub::DataReader nominally relies on Discovery to propagate QoS on a matched dds::pub::DataWriter. Alternatively, a dds::sub::DataReader may get information on a matched dds::pub::DataWriter through QoS sent inline with a sample.

Asserting rti::core::policy::DataReaderProtocol::expects_inline_qos indicates to a matching dds::pub::DataWriter that this dds::sub::DataReader expects to receive inline QoS with every sample. The complete set of inline QoS that a dds::pub::DataWriter may send inline is specified by the Real-Time Publish-Subscribe (RTPS) Wire Interoperability Protocol.

Because RTI Connext dds::pub::DataWriter and dds::sub::DataReader cache Discovery information, inline QoS are largely redundant and thus unecessary. Only for other stateless implementations whose dds::sub::DataReader does not cache Discovery information is inline QoS necessary.

Also note that inline QoS are additional wire-payload that consume additional bandwidth and serialization and deserialization time.

[default] false

bool rti::core::policy::DataReaderProtocol::expects_inline_qos ( ) const

Getter (see setter with the same name)

DataReaderProtocol& rti::core::policy::DataReaderProtocol::disable_positive_acks ( bool  the_disable_positive_acks)

Whether the reader sends positive acknowledgements to writers.

If set to true, the reader does not send positive acknowledgments (ACKs) in response to Heartbeat messages. The reader will send negative acknowledgements (NACKs) when a Heartbeat advertises samples that it has not received.

Otherwise, if set to false (the default), the reader will send ACKs to writers that expect ACKs (rti::core::policy::DataWriterProtocol::disable_positive_acks = false) and it will not send ACKs to writers that disable ACKs (rti::core::policy::DataWriterProtocol::disable_positive_acks = true)

[default] false

bool rti::core::policy::DataReaderProtocol::disable_positive_acks ( ) const

Getter (see setter with the same name)

DataReaderProtocol& rti::core::policy::DataReaderProtocol::propagate_dispose_of_unregistered_instances ( bool  the_propagate_dispose_of_unregistered_instances)

Indicates whether or not an instance can move to the dds::sub::status::InstanceState::not_alive_disposed() state without being in the dds::sub::status::InstanceState::alive() state.

This field only applies to keyed readers.

When the field is set to true, the DataReader will receive dispose notifications even if the instance is not alive.

To guarantee the key availability through the usage of the API dds::sub::DataReader::key_value, this option should be used in combination rti::core::policy::DataWriterProtocol::serialize_key_with_dispose on the DataWriter that should be set to true.

[default] false

bool rti::core::policy::DataReaderProtocol::propagate_dispose_of_unregistered_instances ( ) const

Getter (see setter with the same name)

DataReaderProtocol& rti::core::policy::DataReaderProtocol::propagate_unregister_of_disposed_instances ( bool  the_propagate_unregister_of_disposed_instances)

Indicates whether or not an instance can move to the dds::sub::status::InstanceState::not_alive_no_writers() state without being in the dds::sub::status::InstanceState::alive() state.

This field only applies to keyed readers.

When the field is set to true, the DataReader will receive unregister notifications even if the instance is not alive.

[default] false

bool rti::core::policy::DataReaderProtocol::propagate_unregister_of_disposed_instances ( ) const

Getter (see setter with the same name)

DataReaderProtocol& rti::core::policy::DataReaderProtocol::rtps_reliable_reader ( const rti::core::RtpsReliableReaderProtocol the_rtps_reliable_reader)

RTPS protocol-related configuration settings for the RTPS reliable reader associated to a dds::sub::DataReader. This parameter only has effect if the reader is configured with dds::core::policy::ReliabilityKind::RELIABLE dds::core::policy::ReliabilityKind.

For details, refer to the rti::core::RtpsReliableReaderProtocol

[default]
min_heartbeat_response_delay 0.0 seconds;
max_heartbeat_response_delay 0.5 seconds;
heartbeat_suppression_duration 0.0625 seconds;
nack_period 5.0 seconds;
receive_window_size 256;
round_trip_time 0.0 seconds;
app_ack_period 5.0 seconds;
samples_per_app_ack 1;

const rti::core::RtpsReliableReaderProtocol& rti::core::policy::DataReaderProtocol::rtps_reliable_reader ( ) const

Gets the reliable protocol settings by const reference (see setter)

rti::core::RtpsReliableReaderProtocol& rti::core::policy::DataReaderProtocol::rtps_reliable_reader ( )

Gets the reliable protocol setting by reference (see setter)


RTI Connext Modern C++ API Version 5.3.1 Copyright © Mon Feb 19 2018 Real-Time Innovations, Inc