RTI Connext Java API  Version 6.1.0
RtpsReliableReaderProtocol_t Class Reference

Qos related to reliable reader protocol defined in RTPS. More...

Inherits Struct.

Public Member Functions

 RtpsReliableReaderProtocol_t ()
 Constructor with default values. More...
 
 RtpsReliableReaderProtocol_t (Duration_t min_heartbeat_response_delay, Duration_t max_heartbeat_response_delay, Duration_t heartbeat_suppression_duration, Duration_t nack_period, Duration_t round_trip_time, Duration_t app_ack_period, Duration_t min_app_ack_response_keep_duration)
 Constructor with given durations. More...
 

Public Attributes

final Duration_t min_heartbeat_response_delay
 The minimum delay to respond to a heartbeat. More...
 
final Duration_t max_heartbeat_response_delay
 The maximum delay to respond to a heartbeat. More...
 
final Duration_t heartbeat_suppression_duration
 The duration a reader ignores consecutively received heartbeats. More...
 
final Duration_t nack_period
 The period at which to send NACKs. More...
 
int receive_window_size = 256
 The number of received out-of-order samples a reader can keep at a time. More...
 
final Duration_t round_trip_time
 The duration from sending a NACK to receiving a repair of a sample. More...
 
final Duration_t app_ack_period
 The period at which application-level acknowledgment messages are sent. More...
 
final Duration_t min_app_ack_response_keep_duration
 Minimum duration for which application-level acknowledgment response data is kept. More...
 
int samples_per_app_ack
 The minimum number of samples acknowledged by one application-level acknowledgment message. More...
 

Detailed Description

Qos related to reliable reader protocol defined in RTPS.

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

Properties:
RxO = N/A
Changeable = NO
QoS:
com.rti.dds.infrastructure.DataReaderProtocolQosPolicy com.rti.dds.infrastructure.DiscoveryConfigQosPolicy

Constructor & Destructor Documentation

◆ RtpsReliableReaderProtocol_t() [1/2]

◆ RtpsReliableReaderProtocol_t() [2/2]

Member Data Documentation

◆ min_heartbeat_response_delay

final Duration_t 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

Referenced by RtpsReliableReaderProtocol_t.RtpsReliableReaderProtocol_t().

◆ max_heartbeat_response_delay

final Duration_t 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

Referenced by RtpsReliableReaderProtocol_t.RtpsReliableReaderProtocol_t().

◆ heartbeat_suppression_duration

final Duration_t 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],

Referenced by RtpsReliableReaderProtocol_t.RtpsReliableReaderProtocol_t().

◆ nack_period

final Duration_t 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]

Referenced by RtpsReliableReaderProtocol_t.RtpsReliableReaderProtocol_t().

◆ receive_window_size

int receive_window_size = 256

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]

Referenced by RtpsReliableReaderProtocol_t.RtpsReliableReaderProtocol_t().

◆ round_trip_time

final Duration_t 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]

Referenced by RtpsReliableReaderProtocol_t.RtpsReliableReaderProtocol_t().

◆ app_ack_period

final Duration_t app_ack_period

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

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

[default] 5 seconds

[range] [1 nanosec, 1 year]

Referenced by RtpsReliableReaderProtocol_t.RtpsReliableReaderProtocol_t().

◆ min_app_ack_response_keep_duration

final Duration_t min_app_ack_response_keep_duration

Minimum duration for which application-level acknowledgment response data is kept.

The user-specified response data of an explicit application-level acknowledgment (called by com.rti.dds.subscription.DataReader.acknowledge_sample or com.rti.dds.subscription.DataReader.acknowledge_all) is cached by the com.rti.dds.subscription.DataReader for the purpose of reliably resending the data with the acknowledgment message. After this duration has passed from the time of the first acknowledgment, the response data is dropped from the cache and will not be resent with future acknowledgments for the corresponding sample(s).

[default] 0 sec

[range] [0 sec, 1 year]

Referenced by RtpsReliableReaderProtocol_t.RtpsReliableReaderProtocol_t().

◆ samples_per_app_ack

int samples_per_app_ack

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

This setting applies only when com.rti.dds.infrastructure.ReliabilityQosPolicy.acknowledgment_kind = com.rti.dds.infrastructure.ReliabilityQosPolicyAcknowledgmentModeKind.APPLICATION_EXPLICIT_ACKNOWLEDGMENT_MODE or com.rti.dds.infrastructure.ReliabilityQosPolicyAcknowledgmentModeKind.APPLICATION_AUTO_ACKNOWLEDGMENT_MODE

A com.rti.dds.subscription.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 com.rti.dds.subscription.DataReader.acknowledge_sample this many times consecutively will trigger the sending of an acknowledgment message. Calling com.rti.dds.subscription.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 com.rti.dds.infrastructure.RtpsReliableReaderProtocol_t.app_ack_period, where a com.rti.dds.subscription.DataReader will send acknowledgement messages at the periodic rate regardless.

When this is set to com.rti.dds.infrastructure.ResourceLimitsQosPolicy.LENGTH_UNLIMITED, then acknowledgement messages are sent only periodically, at the rate set by com.rti.dds.infrastructure.RtpsReliableReaderProtocol_t.app_ack_period.

[default] 1

[range] [1, 1000000], or com.rti.dds.infrastructure.ResourceLimitsQosPolicy.LENGTH_UNLIMITED

Referenced by RtpsReliableReaderProtocol_t.RtpsReliableReaderProtocol_t().