RTI Connext Modern C++ API Version 7.2.0
rti::core::RtpsReliableReaderProtocol Class Reference

<<extension>> Configures aspects of the RTPS protocol related to a reliable DataReader More...

#include <rti/core/PolicySettings.hpp>

Public Member Functions

 RtpsReliableReaderProtocol ()
 Creates an instance with the default settings. More...
 
RtpsReliableReaderProtocolmin_heartbeat_response_delay (const dds::core::Duration &the_min_heartbeat_response_delay)
 The minimum delay to respond to a heartbeat. More...
 
dds::core::Duration min_heartbeat_response_delay () const
 Getter (see setter with the same name) More...
 
RtpsReliableReaderProtocolmax_heartbeat_response_delay (const dds::core::Duration &the_max_heartbeat_response_delay)
 The maximum delay to respond to a heartbeat. More...
 
dds::core::Duration max_heartbeat_response_delay () const
 Getter (see setter with the same name) More...
 
RtpsReliableReaderProtocolheartbeat_suppression_duration (const dds::core::Duration &the_heartbeat_suppression_duration)
 The duration a reader ignores consecutively received heartbeats. More...
 
dds::core::Duration heartbeat_suppression_duration () const
 Getter (see setter with the same name) More...
 
RtpsReliableReaderProtocolnack_period (const dds::core::Duration &the_nack_period)
 The period at which to send NACKs. More...
 
dds::core::Duration nack_period () const
 Getter (see setter with the same name) More...
 
RtpsReliableReaderProtocolreceive_window_size (int32_t the_receive_window_size)
 The number of received out-of-order samples a reader can keep at a time. More...
 
int32_t receive_window_size () const
 Getter (see setter with the same name) More...
 
RtpsReliableReaderProtocolround_trip_time (const dds::core::Duration &the_round_trip_time)
 The duration from sending a NACK to receiving a repair of a sample. More...
 
dds::core::Duration round_trip_time () const
 Getter (see setter with the same name) More...
 
RtpsReliableReaderProtocolapp_ack_period (const dds::core::Duration &the_app_ack_period)
 The period at which application-level acknowledgment messages are sent. More...
 
dds::core::Duration app_ack_period () const
 Getter (see setter with the same name) More...
 
RtpsReliableReaderProtocolsamples_per_app_ack (int32_t the_samples_per_app_ack)
 The minimum number of samples acknowledged by one application-level acknowledgment message. More...
 
int32_t samples_per_app_ack () const
 Getter (see setter with the same name) More...
 

Detailed Description

<<extension>> Configures aspects of the RTPS protocol related to a reliable DataReader

It is used to config reliable reader according to RTPS protocol.

Properties:
RxO = N/A
Changeable = NO
QoS:
rti::core::policy::DataReaderProtocol rti::core::policy::DiscoveryConfig

Constructor & Destructor Documentation

◆ RtpsReliableReaderProtocol()

rti::core::RtpsReliableReaderProtocol::RtpsReliableReaderProtocol ( )
inline

Creates an instance with the default settings.

Member Function Documentation

◆ min_heartbeat_response_delay() [1/2]

RtpsReliableReaderProtocol & rti::core::RtpsReliableReaderProtocol::min_heartbeat_response_delay ( const dds::core::Duration the_min_heartbeat_response_delay)

The minimum delay to respond to a heartbeat.

When a reliable reader receives a heartbeat from a remote writer and finds out that it needs to send back an ACK/NACK message, the reader can choose to delay a while. This sets the value of the minimum delay.

[default] 0 seconds

[range] [0, 1 year], <= max_heartbeat_response_delay

◆ min_heartbeat_response_delay() [2/2]

dds::core::Duration rti::core::RtpsReliableReaderProtocol::min_heartbeat_response_delay ( ) const

Getter (see setter with the same name)

◆ max_heartbeat_response_delay() [1/2]

RtpsReliableReaderProtocol & rti::core::RtpsReliableReaderProtocol::max_heartbeat_response_delay ( const dds::core::Duration the_max_heartbeat_response_delay)

The maximum delay to respond to a heartbeat.

When a reliable reader receives a heartbeat from a remote writer and finds out that it needs to send back an ACK/NACK message, the reader can choose to delay a while. This sets the value of maximum delay.

[default] The default value depends on the container policy:

[range] [0, 1 year], >= min_heartbeat_response_delay

◆ max_heartbeat_response_delay() [2/2]

dds::core::Duration rti::core::RtpsReliableReaderProtocol::max_heartbeat_response_delay ( ) const

Getter (see setter with the same name)

◆ heartbeat_suppression_duration() [1/2]

RtpsReliableReaderProtocol & rti::core::RtpsReliableReaderProtocol::heartbeat_suppression_duration ( const dds::core::Duration the_heartbeat_suppression_duration)

The duration a reader ignores consecutively received heartbeats.

When a reliable reader receives consecutive heartbeats within a short duration that will trigger redundant NACKs, the reader may ignore the latter heartbeat(s). This sets the duration during which additionally received heartbeats are suppressed.

[default] 0.0625 seconds

[range] [0, 1 year],

◆ heartbeat_suppression_duration() [2/2]

dds::core::Duration rti::core::RtpsReliableReaderProtocol::heartbeat_suppression_duration ( ) const

Getter (see setter with the same name)

◆ nack_period() [1/2]

RtpsReliableReaderProtocol & rti::core::RtpsReliableReaderProtocol::nack_period ( const dds::core::Duration the_nack_period)

The period at which to send NACKs.

A reliable reader will send periodic NACKs at this rate when it first matches with a reliable writer. The reader will stop sending NACKs when it has received all available historical data from the writer.

[default] 5 seconds

[range] [1 nanosec, 1 year]

◆ nack_period() [2/2]

dds::core::Duration rti::core::RtpsReliableReaderProtocol::nack_period ( ) const

Getter (see setter with the same name)

◆ receive_window_size() [1/2]

RtpsReliableReaderProtocol & rti::core::RtpsReliableReaderProtocol::receive_window_size ( int32_t  the_receive_window_size)

The number of received out-of-order samples a reader can keep at a time.

A reliable reader stores the out-of-order samples it receives until it can present them to the application in-order. The receive window is the maximum number of out-of-order samples that a reliable reader keeps at a given time. When the receive window is full, subsequently received out-of-order samples are dropped.

[default] 256

[range] [>= 1]

◆ receive_window_size() [2/2]

int32_t rti::core::RtpsReliableReaderProtocol::receive_window_size ( ) const

Getter (see setter with the same name)

◆ round_trip_time() [1/2]

RtpsReliableReaderProtocol & rti::core::RtpsReliableReaderProtocol::round_trip_time ( const dds::core::Duration the_round_trip_time)

The duration from sending a NACK to receiving a repair of a sample.

This round-trip time is an estimate of the time starting from when the reader sends a NACK for a specific sample to when it receives that sample. For each sample, the reader will not send a subsequent NACK for it until the round-trip time has passed, thus preventing inefficient redundant requests.

[default] 0 seconds

[range] [0 nanosec, 1 year]

◆ round_trip_time() [2/2]

dds::core::Duration rti::core::RtpsReliableReaderProtocol::round_trip_time ( ) const

Getter (see setter with the same name)

◆ app_ack_period() [1/2]

RtpsReliableReaderProtocol & rti::core::RtpsReliableReaderProtocol::app_ack_period ( const dds::core::Duration the_app_ack_period)

The period at which application-level acknowledgment messages are sent.

A dds::sub::DataReader sends application-level acknowledgment messages to a dds::pub::DataWriter at this periodic rate, and will continue sending until it receives a message from the dds::pub::DataWriter that it has received and processed the acknowledgment and an AppAckConfirmation has been received by the dds::sub::DataReader. Note: application-level acknowledgment messages can also be sent non-periodically, as determined by rti::core::RtpsReliableReaderProtocol::samples_per_app_ack.

[default] 5 seconds

[range] [1 nanosec, 1 year]

◆ app_ack_period() [2/2]

dds::core::Duration rti::core::RtpsReliableReaderProtocol::app_ack_period ( ) const

Getter (see setter with the same name)

◆ samples_per_app_ack() [1/2]

RtpsReliableReaderProtocol & rti::core::RtpsReliableReaderProtocol::samples_per_app_ack ( int32_t  the_samples_per_app_ack)

The minimum number of samples acknowledged by one application-level acknowledgment message.

This setting applies only when dds::core::policy::Reliability::acknowledgment_kind = rti::core::policy::AcknowledgmentKind_def::APPLICATION_EXPLICIT or rti::core::policy::AcknowledgmentKind_def::APPLICATION_AUTO

A dds::sub::DataReader will immediately send an application-level acknowledgment message when it has at least this many samples that have been acknowledged. It will not send an acknowledgment message until it has at least this many samples pending acknowledgment.

For example, calling dds::sub::DataReader::acknowledge_sample this many times consecutively will trigger the sending of an acknowledgment message. Calling dds::sub::DataReader::acknowledge_all may trigger the sending of an acknowledgment message, if at least this many samples are being acknowledged at once.

This is independent of the rti::core::RtpsReliableReaderProtocol::app_ack_period, where a dds::sub::DataReader will send acknowledgement messages at the periodic rate regardless.

When this is set to dds::core::LENGTH_UNLIMITED, then acknowledgement messages are sent only periodically, at the rate set by rti::core::RtpsReliableReaderProtocol::app_ack_period.

[default] 1

[range] [1, 1000000], or dds::core::LENGTH_UNLIMITED

◆ samples_per_app_ack() [2/2]

int32_t rti::core::RtpsReliableReaderProtocol::samples_per_app_ack ( ) const

Getter (see setter with the same name)