RTI Connext Modern C++ API  Version 6.1.0

Information about the status dds::core::status::StatusMask::subscription_matched() More...

#include <TStatus.hpp>

Public Member Functions

int32_t total_count () const
 The total cumulative number of times that this dds::sub::DataReader discovered a "match" with a dds::pub::DataWriter. More...
 
int32_t total_count_change () const
 The changes in total_count since the last time the listener was called or the status was read. More...
 
int32_t current_count () const
 The current number of DataWriters with which the dds::sub::DataReader is matched. More...
 
int32_t current_count_change () const
 The change in current_count since the last time the listener was called or the status was read. More...
 
const dds::core::InstanceHandle last_publication_handle () const
 This InstanceHandle can be used to look up which remote dds::pub::DataWriter was the last to cause this DataReader's status to change, using dds::sub::DataReader::matched_publication_data. More...
 
int32_t current_count_peak () const
 <<extension>> Greatest number of DataReaders that matched this dds::pub::DataWriter simultaneously. More...
 

Detailed Description

Information about the status dds::core::status::StatusMask::subscription_matched()

A "match" happens when the dds::sub::DataReader finds a dds::pub::DataWriter with the same dds::topic::Topic, same or compatible data type, and an offered QoS that is compatible with that requested by the dds::sub::DataReader. (For information on compatible data types, see the Extensible Types Guide.)

This status is also changed (and the listener, if any, called) when a match is ended. A local dds::sub::DataReader will become "unmatched" from a remote dds::pub::DataWriter when that dds::pub::DataWriter goes away for any of the following reasons:

This status may reflect changes from multiple match or unmatch events, and the dds::core::status::SubscriptionMatchedStatus::current_count_change can be used to determine the number of changes since the listener was called back or the status was checked.

Note: A DataWriter's loss of liveliness (which is determined by dds::core::policy::LivelinessKind) does not trigger an unmatch event. So a DataWriter may still match even though its liveliness is lost.

Member Function Documentation

◆ total_count()

int32_t dds::core::status::SubscriptionMatchedStatus::total_count ( ) const
inline

The total cumulative number of times that this dds::sub::DataReader discovered a "match" with a dds::pub::DataWriter.

This number increases whenever a new match is discovered. It does not decrease when an existing match goes away for any of the reasons described in dds::core::status::SubscriptionMatchedStatus.

◆ total_count_change()

int32_t dds::core::status::SubscriptionMatchedStatus::total_count_change ( ) const
inline

The changes in total_count since the last time the listener was called or the status was read.

Note that this number will never be negative (because it's the total number of times the DataReader ever matched with a DataWriter).

◆ current_count()

int32_t dds::core::status::SubscriptionMatchedStatus::current_count ( ) const
inline

The current number of DataWriters with which the dds::sub::DataReader is matched.

This number increases when a new match is discovered and decreases when an existing match goes away for any of the reasons described in dds::core::status::SubscriptionMatchedStatus.

◆ current_count_change()

int32_t dds::core::status::SubscriptionMatchedStatus::current_count_change ( ) const
inline

The change in current_count since the last time the listener was called or the status was read.

Note that a negative current_count_change means that one or more DataWriters have become unmatched for one or more of the reasons described in dds::core::status::SubscriptionMatchedStatus.

◆ last_publication_handle()

const dds::core::InstanceHandle dds::core::status::SubscriptionMatchedStatus::last_publication_handle ( ) const
inline

This InstanceHandle can be used to look up which remote dds::pub::DataWriter was the last to cause this DataReader's status to change, using dds::sub::DataReader::matched_publication_data.

If the DataWriter no longer matches this DataReader due to any of the reasons in dds::core::status::SubscriptionMatchedStatus except incompatible QoS, then the DataWriter has been purged from this DataReader's DomainParticipant discovery database. (See the "What is Discovery?" section of the User's Manual.) In that case, the dds::sub::DataReader::matched_publication_data method will not be able to return information about the DataWriter. The only way to get information about the lost DataWriter is if you cached the information previously.

◆ current_count_peak()

int32_t current_count_peak ( ) const

<<extension>> Greatest number of DataReaders that matched this dds::pub::DataWriter simultaneously.

That is, there was no moment in time when more than this many DataReaders matched this DataWriter. (As a result, total_count can be higher than current_count_peak.)