RTI Connext C API  Version 6.1.2
DDS_DataReaderProtocolStatus Struct Reference

<<extension>> The status of a reader's internal protocol related metrics, like the number of samples received, filtered, rejected; and status of wire protocol traffic. More...

Data Fields

DDS_LongLong received_sample_count
 The number of samples received by a DataReader. More...
 
DDS_LongLong received_sample_count_change
 The change in DDS_DataReaderProtocolStatus::received_sample_count since the last time the status was read. More...
 
DDS_LongLong received_sample_bytes
 The number of bytes received by a DataReader. More...
 
DDS_LongLong received_sample_bytes_change
 The change in DDS_DataReaderProtocolStatus::received_sample_bytes since the last time the status was read. More...
 
DDS_LongLong duplicate_sample_count
 The number of samples from a remote DataWriter received, not for the first time, by a local DataReader. More...
 
DDS_LongLong duplicate_sample_count_change
 The change in DDS_DataReaderProtocolStatus::duplicate_sample_count since the last time the status was read. More...
 
DDS_LongLong duplicate_sample_bytes
 The number of bytes of samples from a remote DataWriter received, not for the first time, by a local DataReader. More...
 
DDS_LongLong duplicate_sample_bytes_change
 The change in DDS_DataReaderProtocolStatus::duplicate_sample_bytes since the last time the status was read. More...
 
DDS_LongLong filtered_sample_count
 [DEPRECATED]. See: DDS_DataReaderCacheStatus::time_based_filter_dropped_sample_count DDS_DataReaderCacheStatus::content_filter_dropped_sample_count More...
 
DDS_LongLong filtered_sample_count_change
 [DEPRECATED]. See: DDS_DataReaderCacheStatus::time_based_filter_dropped_sample_count DDS_DataReaderCacheStatus::content_filter_dropped_sample_count More...
 
DDS_LongLong filtered_sample_bytes
 [DEPRECATED]. See: DDS_DataReaderCacheStatus::time_based_filter_dropped_sample_count DDS_DataReaderCacheStatus::content_filter_dropped_sample_count More...
 
DDS_LongLong filtered_sample_bytes_change
 [DEPRECATED]. See: DDS_DataReaderCacheStatus::time_based_filter_dropped_sample_count DDS_DataReaderCacheStatus::content_filter_dropped_sample_count More...
 
DDS_LongLong received_heartbeat_count
 The number of Heartbeats from a remote DataWriter received by a local DataReader. More...
 
DDS_LongLong received_heartbeat_count_change
 The change in DDS_DataReaderProtocolStatus::received_heartbeat_count since the last time the status was read. More...
 
DDS_LongLong received_heartbeat_bytes
 The number of bytes of Heartbeats from a remote DataWriter received by a local DataReader. More...
 
DDS_LongLong received_heartbeat_bytes_change
 The change in DDS_DataReaderProtocolStatus::received_heartbeat_bytes since the last time the status was read. More...
 
DDS_LongLong sent_ack_count
 The number of ACKs sent from a local DataReader to a matching remote DataWriter. More...
 
DDS_LongLong sent_ack_count_change
 The change in DDS_DataReaderProtocolStatus::sent_ack_count since the last time the status was read. More...
 
DDS_LongLong sent_ack_bytes
 The number of bytes of ACKs sent from a local DataReader to a matching remote DataWriter. More...
 
DDS_LongLong sent_ack_bytes_change
 The change in DDS_DataReaderProtocolStatus::sent_ack_bytes since the last time the status was read. More...
 
DDS_LongLong sent_nack_count
 The number of NACKs sent from a local DataReader to a matching remote DataWriter. More...
 
DDS_LongLong sent_nack_count_change
 The change in DDS_DataReaderProtocolStatus::sent_nack_count since the last time the status was read. More...
 
DDS_LongLong sent_nack_bytes
 The number of bytes of NACKs sent from a local DataReader to a matching remote DataWriter. More...
 
DDS_LongLong sent_nack_bytes_change
 The change in DDS_DataReaderProtocolStatus::sent_nack_bytes since the last time the status was read. More...
 
DDS_LongLong received_gap_count
 The number of GAPs received from remote DataWriter to this DataReader. More...
 
DDS_LongLong received_gap_count_change
 The change in DDS_DataReaderProtocolStatus::received_gap_count since the last time the status was read. More...
 
DDS_LongLong received_gap_bytes
 The number of bytes of GAPs received from remote DataWriter to this DataReader. More...
 
DDS_LongLong received_gap_bytes_change
 The change in DDS_DataReaderProtocolStatus::received_gap_bytes since the last time the status was read. More...
 
DDS_LongLong rejected_sample_count
 The number of times a sample is rejected because it cannot be accepted by a reliable DataReader. More...
 
DDS_LongLong rejected_sample_count_change
 The change in DDS_DataReaderProtocolStatus::rejected_sample_count since the last time the status was read. More...
 
struct DDS_SequenceNumber_t first_available_sample_sequence_number
 Sequence number of the first available sample in a matched DataWriters reliability queue. More...
 
struct DDS_SequenceNumber_t last_available_sample_sequence_number
 Sequence number of the last available sample in a matched Datawriter's reliability queue. More...
 
struct DDS_SequenceNumber_t last_committed_sample_sequence_number
 Sequence number of the newest sample received from the matched DataWriter committed to the DataReader's queue. More...
 
DDS_Long uncommitted_sample_count
 Number of received samples that are not yet available to be read or taken, due to being received out of order. More...
 
DDS_LongLong out_of_range_rejected_sample_count
 The number of samples dropped by the DataReader due to received window is full and the sample is out-of-order. More...
 
DDS_LongLong received_fragment_count
 The number of DATA_FRAG messages that have been received by this DataReader. More...
 
DDS_LongLong dropped_fragment_count
 The number of DATA_FRAG messages that have been dropped by a DataReader. More...
 
DDS_LongLong reassembled_sample_count
 The number of fragmented samples that have been reassembled by a DataReader. More...
 
DDS_LongLong sent_nack_fragment_count
 The number of NACK fragments that have been sent from a DataReader to a DataWriter. More...
 
DDS_LongLong sent_nack_fragment_bytes
 The number of NACK fragment bytes that have been sent from a DataReader to a DataWriter. More...
 

Detailed Description

<<extension>> The status of a reader's internal protocol related metrics, like the number of samples received, filtered, rejected; and status of wire protocol traffic.

Entity:
DDS_DataReader

Field Documentation

◆ received_sample_count

DDS_LongLong DDS_DataReaderProtocolStatus::received_sample_count

The number of samples received by a DataReader.

Depending on how the DDS_DataReaderProtocolStatus was obtained this may count samples coming from a specific DataWriter or from all the DataWriters that are matched with the DataReader.

If the DDS_DataReaderProtocolStatus is obtained using the DDS_DataReader_get_datareader_protocol_status operation then it will count samples from any DataWriter. If the DataReaderProtocolStatus is obtained using the DDS_DataReader_get_matched_publication_datareader_protocol_status then it will count the samples for the DataWriter specified as a parameter to the function.

Duplicate samples arriving from the DataWriter(s) (e.g. via multiple network paths) are detected prior to increasing this counter. The duplicate samples are counted by DDS_DataReaderProtocolStatus::duplicate_sample_count.

If the DataReader has specified a ContentFilter the received samples that do not pass the filter are part of this counter. The filtered samples are counted by DDS_DataReaderProtocolStatus::filtered_sample_count.

Samples rejected because they do not fit on the DataReader Queue are also part of this counter.

Note the received_sample_count counts samples received from all DataWriters and it does not necessarily match the number of samples accepted into the DataReader Queue. This is because:

  • Samples can also be inserted into the DataReader Queue by lifecycle events that are locally detected like an instance becoming not alive as a result of DataWriters leaving the network.
  • Samples can be filtered out due to ContentFilter or TimeFilter
  • Samples can be rejected because there is no space in DataReader Queue

Note that when data is fragmented, this statistic is updated when all of the fragments required to reassemble a sample are received, not when individual fragments are received.

◆ received_sample_count_change

DDS_LongLong DDS_DataReaderProtocolStatus::received_sample_count_change

The change in DDS_DataReaderProtocolStatus::received_sample_count since the last time the status was read.

See also
DDS_DataReaderProtocolStatus::received_sample_count

Note that when data is fragmented, this statistic is updated when all of the fragments required to reassemble a sample are received, not when individual fragments are received.

◆ received_sample_bytes

DDS_LongLong DDS_DataReaderProtocolStatus::received_sample_bytes

The number of bytes received by a DataReader.

See also
DDS_DataReaderProtocolStatus::received_sample_count

Note that when data is fragmented, this statistic is updated upon the receipt of each fragment, not when a sample is reassembled.

◆ received_sample_bytes_change

DDS_LongLong DDS_DataReaderProtocolStatus::received_sample_bytes_change

The change in DDS_DataReaderProtocolStatus::received_sample_bytes since the last time the status was read.

See also
DDS_DataReaderProtocolStatus::received_sample_count_change

Note that when data is fragmented, this statistic is updated upon the receipt of each fragment, not when a sample is reassembled.

◆ duplicate_sample_count

DDS_LongLong DDS_DataReaderProtocolStatus::duplicate_sample_count

The number of samples from a remote DataWriter received, not for the first time, by a local DataReader.

Such samples can be redundant, out-of-order, etc. and are not stored in the reader's queue.

◆ duplicate_sample_count_change

DDS_LongLong DDS_DataReaderProtocolStatus::duplicate_sample_count_change

The change in DDS_DataReaderProtocolStatus::duplicate_sample_count since the last time the status was read.

Such samples can be redundant, out-of-order, etc. and are not stored in the reader's queue.

◆ duplicate_sample_bytes

DDS_LongLong DDS_DataReaderProtocolStatus::duplicate_sample_bytes

The number of bytes of samples from a remote DataWriter received, not for the first time, by a local DataReader.

Such samples can be redundant, out-of-order, etc. and are not stored in the reader's queue.

◆ duplicate_sample_bytes_change

DDS_LongLong DDS_DataReaderProtocolStatus::duplicate_sample_bytes_change

The change in DDS_DataReaderProtocolStatus::duplicate_sample_bytes since the last time the status was read.

Such samples can be redundant, out-of-order, etc. and are not stored in the reader's queue.

◆ filtered_sample_count

◆ filtered_sample_count_change

◆ filtered_sample_bytes

◆ filtered_sample_bytes_change

◆ received_heartbeat_count

DDS_LongLong DDS_DataReaderProtocolStatus::received_heartbeat_count

The number of Heartbeats from a remote DataWriter received by a local DataReader.

◆ received_heartbeat_count_change

DDS_LongLong DDS_DataReaderProtocolStatus::received_heartbeat_count_change

The change in DDS_DataReaderProtocolStatus::received_heartbeat_count since the last time the status was read.

◆ received_heartbeat_bytes

DDS_LongLong DDS_DataReaderProtocolStatus::received_heartbeat_bytes

The number of bytes of Heartbeats from a remote DataWriter received by a local DataReader.

◆ received_heartbeat_bytes_change

DDS_LongLong DDS_DataReaderProtocolStatus::received_heartbeat_bytes_change

The change in DDS_DataReaderProtocolStatus::received_heartbeat_bytes since the last time the status was read.

◆ sent_ack_count

DDS_LongLong DDS_DataReaderProtocolStatus::sent_ack_count

The number of ACKs sent from a local DataReader to a matching remote DataWriter.

◆ sent_ack_count_change

DDS_LongLong DDS_DataReaderProtocolStatus::sent_ack_count_change

The change in DDS_DataReaderProtocolStatus::sent_ack_count since the last time the status was read.

◆ sent_ack_bytes

DDS_LongLong DDS_DataReaderProtocolStatus::sent_ack_bytes

The number of bytes of ACKs sent from a local DataReader to a matching remote DataWriter.

◆ sent_ack_bytes_change

DDS_LongLong DDS_DataReaderProtocolStatus::sent_ack_bytes_change

The change in DDS_DataReaderProtocolStatus::sent_ack_bytes since the last time the status was read.

◆ sent_nack_count

DDS_LongLong DDS_DataReaderProtocolStatus::sent_nack_count

The number of NACKs sent from a local DataReader to a matching remote DataWriter.

◆ sent_nack_count_change

DDS_LongLong DDS_DataReaderProtocolStatus::sent_nack_count_change

The change in DDS_DataReaderProtocolStatus::sent_nack_count since the last time the status was read.

◆ sent_nack_bytes

DDS_LongLong DDS_DataReaderProtocolStatus::sent_nack_bytes

The number of bytes of NACKs sent from a local DataReader to a matching remote DataWriter.

◆ sent_nack_bytes_change

DDS_LongLong DDS_DataReaderProtocolStatus::sent_nack_bytes_change

The change in DDS_DataReaderProtocolStatus::sent_nack_bytes since the last time the status was read.

◆ received_gap_count

DDS_LongLong DDS_DataReaderProtocolStatus::received_gap_count

The number of GAPs received from remote DataWriter to this DataReader.

◆ received_gap_count_change

DDS_LongLong DDS_DataReaderProtocolStatus::received_gap_count_change

The change in DDS_DataReaderProtocolStatus::received_gap_count since the last time the status was read.

◆ received_gap_bytes

DDS_LongLong DDS_DataReaderProtocolStatus::received_gap_bytes

The number of bytes of GAPs received from remote DataWriter to this DataReader.

◆ received_gap_bytes_change

DDS_LongLong DDS_DataReaderProtocolStatus::received_gap_bytes_change

The change in DDS_DataReaderProtocolStatus::received_gap_bytes since the last time the status was read.

◆ rejected_sample_count

DDS_LongLong DDS_DataReaderProtocolStatus::rejected_sample_count

The number of times a sample is rejected because it cannot be accepted by a reliable DataReader.

Samples rejected by a reliable DataReader will be NACKed, and they will have to be resent by the DataWriter if they are still available in the DataWriter queue.

This counter will always be 0 when using DDS_BEST_EFFORT_RELIABILITY_QOS.

◆ rejected_sample_count_change

DDS_LongLong DDS_DataReaderProtocolStatus::rejected_sample_count_change

The change in DDS_DataReaderProtocolStatus::rejected_sample_count since the last time the status was read.

This counter will always be 0 when using DDS_BEST_EFFORT_RELIABILITY_QOS.

◆ first_available_sample_sequence_number

struct DDS_SequenceNumber_t DDS_DataReaderProtocolStatus::first_available_sample_sequence_number

Sequence number of the first available sample in a matched DataWriters reliability queue.

Applicable only for reliable DataReaders, and when retrieving matched DataWriter statuses.

Updated upon receiving Heartbeat submessages from a matched reliable DataWriter.

◆ last_available_sample_sequence_number

struct DDS_SequenceNumber_t DDS_DataReaderProtocolStatus::last_available_sample_sequence_number

Sequence number of the last available sample in a matched Datawriter's reliability queue.

Applicable only for reliable DataReaders, and when retrieving matched DataWriter statuses.

Updated upon receiving Heartbeat submessages from a matched reliable DataWriter.

◆ last_committed_sample_sequence_number

struct DDS_SequenceNumber_t DDS_DataReaderProtocolStatus::last_committed_sample_sequence_number

Sequence number of the newest sample received from the matched DataWriter committed to the DataReader's queue.

Applicable only when retrieving matched DataWriter statuses.

For best-effort DataReaders, this is the sequence number of the latest sample received.

For reliable DataReaders, this is the sequence number of the latest sample that is available to be read or taken from the DataReader's queue.

◆ uncommitted_sample_count

DDS_Long DDS_DataReaderProtocolStatus::uncommitted_sample_count

Number of received samples that are not yet available to be read or taken, due to being received out of order.

Applicable only when retrieving matched DataWriter statuses.

◆ out_of_range_rejected_sample_count

DDS_LongLong DDS_DataReaderProtocolStatus::out_of_range_rejected_sample_count

The number of samples dropped by the DataReader due to received window is full and the sample is out-of-order.

When using DDS_RELIABLE_RELIABILITY_QOS; if the DataReader received samples out-of-order, they are stored internally until the missing samples are received. The number of out-of-order samples that the DataReader can keep is set by DDS_RtpsReliableReaderProtocol_t::receive_window_size. When the received window is full any out-of-order sample received will be dropped.

◆ received_fragment_count

DDS_LongLong DDS_DataReaderProtocolStatus::received_fragment_count

The number of DATA_FRAG messages that have been received by this DataReader.

This statistic is incremented upon the receipt of each DATA_FRAG message. Fragments from duplicate samples do not count towards this statistic. Applicable only when data is fragmented.

◆ dropped_fragment_count

DDS_LongLong DDS_DataReaderProtocolStatus::dropped_fragment_count

The number of DATA_FRAG messages that have been dropped by a DataReader.

This statistic does not include malformed fragments. Applicable only when data is fragmented.

◆ reassembled_sample_count

DDS_LongLong DDS_DataReaderProtocolStatus::reassembled_sample_count

The number of fragmented samples that have been reassembled by a DataReader.

This statistic is incremented when all of the fragments which are required to reassemble an entire sample have been received. Applicable only when data is fragmented.

◆ sent_nack_fragment_count

DDS_LongLong DDS_DataReaderProtocolStatus::sent_nack_fragment_count

The number of NACK fragments that have been sent from a DataReader to a DataWriter.

NACK FRAG RTPS messages are sent when large data is used in conjunction with reliable communication. They have the same properties as NACK messages, but instead of applying to samples, they apply to fragments. Applicable only when data is fragmented.

◆ sent_nack_fragment_bytes

DDS_LongLong DDS_DataReaderProtocolStatus::sent_nack_fragment_bytes

The number of NACK fragment bytes that have been sent from a DataReader to a DataWriter.

NACK FRAG RTPS messages are sent when large data is used in conjunction with reliable communication. They have the same properties as NACK messages, but instead of applying to samples, they apply to fragments. Applicable only when data is fragmented.