RTI Connext Traditional C++ API  Version 7.0.0

<<interface>> Abstract base class for all the DDS objects that support QoS policies, a listener, and a status condition. More...

Inheritance diagram for DDSEntity:
DDSDomainEntity DDSDomainParticipant DDSDataReader DDSDataWriter DDSPublisher DDSSubscriber DDSTopic DDSDynamicDataReader DDSDynamicDataReader DDSKeyedOctetsDataReader DDSKeyedStringDataReader DDSOctetsDataReader DDSParticipantBuiltinTopicDataDataReader DDSPublicationBuiltinTopicDataDataReader DDSServiceRequestDataReader DDSStringDataReader DDSSubscriptionBuiltinTopicDataDataReader DDSTopicBuiltinTopicDataDataReader FooDataReader DDSDynamicDataWriter DDSDynamicDataWriter DDSKeyedOctetsDataWriter DDSKeyedStringDataWriter DDSOctetsDataWriter DDSStringDataWriter FooDataWriter

Public Member Functions

virtual DDS_ReturnCode_t enable ()=0
 Enables the DDSEntity. More...
 
virtual DDSStatusConditionget_statuscondition ()=0
 Allows access to the DDSStatusCondition associated with the DDSEntity. More...
 
virtual DDS_StatusMask get_status_changes ()=0
 Retrieves the list of communication statuses in the DDSEntity that are triggered. More...
 
virtual DDS_InstanceHandle_t get_instance_handle ()=0
 Allows access to the DDS_InstanceHandle_t associated with the DDSEntity. More...
 

Detailed Description

<<interface>> Abstract base class for all the DDS objects that support QoS policies, a listener, and a status condition.

All operations except for set_qos(), get_qos(), set_listener(), get_listener() and enable(), may return the value DDS_RETCODE_NOT_ENABLED.

QoS:
QoS Policies
Status:
Status Kinds
Listener:
DDSListener

Abstract operations

Each derived entity provides the following operations specific to its role in RTI Connext.

set_qos (abstract)

This operation sets the QoS policies of the DDSEntity. Each of the derived entity classes provides this operation: DDSEntity classes (DDSDomainParticipant, DDSTopic, DDSPublisher, DDSDataWriter, DDSSubscriber, and DDSDataReader) so that the policies that are meaningful to each DDSEntity can be set. For example, see DDSDomainParticipant::set_qos.

Precondition
Certain policies are immutable (see QoS Policies): they can only be set at DDSEntity creation time or before the entity is enabled. If set_qos() is invoked after the DDSEntity is enabled and it attempts to change the value of an immutable policy, the operation will fail and return DDS_RETCODE_IMMUTABLE_POLICY.
Certain values of QoS policies can be incompatible with the settings of the other policies. The set_qos() operation will also fail if it specifies a set of values that, once combined with the existing values, would result in an inconsistent set of policies. In this case, the operation will fail and return DDS_RETCODE_INCONSISTENT_POLICY.
If the application supplies a non-default value for a QoS policy that is not supported by the implementation of the service, the set_qos operation will fail and return DDS_RETCODE_UNSUPPORTED.
Postcondition
The existing set of policies is only changed if the set_qos() operation succeeds. This is indicated by a return code of DDS_RETCODE_OK. In all other cases, none of the policies are modified.

Each derived DDSEntity class (DDSDomainParticipant, DDSTopic, DDSPublisher, DDSDataWriter, DDSSubscriber, DDSDataReader) has a corresponding special value of the QoS (DDS_PARTICIPANT_QOS_DEFAULT, DDS_PUBLISHER_QOS_DEFAULT, DDS_SUBSCRIBER_QOS_DEFAULT, DDS_TOPIC_QOS_DEFAULT, DDS_DATAWRITER_QOS_DEFAULT, DDS_DATAREADER_QOS_DEFAULT). This special value may be used as a parameter to the set_qos operation to indicate that the QoS of the DDSEntity should be changed to match the current default QoS set in the DDSEntity's factory. The operation set_qos cannot modify the immutable QoS, so a successful return of the operation indicates that the mutable QoS for the Entity has been modified to match the current default for the DDSEntity's factory.

The set of policies specified in the qos parameter are applied on top of the existing QoS, replacing the values of any policies previously set.

Possible error codes returned in addition to Standard Return Codes : DDS_RETCODE_IMMUTABLE_POLICY, DDS_RETCODE_INCONSISTENT_POLICY.

get_qos (abstract)

This operation allows access to the existing set of QoS policies for the DDSEntity. This operation must be provided by each of the derived DDSEntity classes (DDSDomainParticipant, DDSTopic, DDSPublisher, DDSDataWriter, DDSSubscriber, and DDSDataReader), so that the policies that are meaningful to each DDSEntity can be retrieved. For example, see DDSDomainParticipant::get_qos

Possible error codes are Standard Return Codes.

set_listener (abstract)

This operation installs a DDSListener on the DDSEntity. The listener will only be invoked on the changes of communication status indicated by the specified mask.

This operation must be provided by each of the derived DDSEntity classes (DDSDomainParticipant, DDSTopic, DDSPublisher, DDSDataWriter, DDSSubscriber, and DDSDataReader), so that the listener is of the concrete type suitable to the particular DDSEntity.

There are two components involved when setting up listeners: the listener itself and the mask. Both of these can be NULL.

Listeners for some Entities derive from the Connext DDS Listeners for related Entities. This means that the derived Listener has all of the methods of its parent class. You can install Listeners at all levels of the object hierarchy. At the top is the DomainParticipantListener; only one can be installed in a DomainParticipant. Then every Subscriber and Publisher can have their own Listener. Finally, each Topic, DataReader and DataWriter can have their own listeners. All are optional.

Suppose, however, that an Entity does not install a Listener, or installs a Listener that does not have particular communication status selected in the bitmask. In this case, if/when that particular status changes for that Entity, the corresponding Listener for that Entity's parent is called. Status changes are "propagated" from child Entity to parent Entity until a Listener is found that is registered for that status. Connext DDS will give up and drop the status-change event only if no Listeners have been installed in the object hierarchy to be called back for the specific status.

The following table describes the effect of different combinations of Listeners and Status Bit Masks considering the hierarchical processing.

Effect of Different Combinations of Listeners and Status Bit Masks
No Bits Set in Mask Some/All Bits Set in Mask
Listener is Specified Connext DDS finds the next most relevant listener for the changed status For the statuses that are enabled in the mask, the most relevant listener will be called. The 'statusChangedFlag' for the relevant status is reset
Listener is NULL Connext DDS behaves as if the listener is not installed and finds the next most relevant listener for that status Connext DDS behaves as if the listener is installed, but the callback is doing nothing. This is called a "nil" listener
Postcondition
Only one listener can be attached to each DDSEntity. If a listener was already set, the operation set_listener() will replace it with the new one. Consequently, if the value NULL is passed for the listener parameter to the set_listener operation, any existing listener will be removed.

get_listener (abstract)

This operation allows access to the existing DDSListener attached to the DDSEntity.

This operation must be provided by each of the derived DDSEntity classes (DDSDomainParticipant, DDSTopic, DDSPublisher, DDSDataWriter, DDSSubscriber, and DDSDataReader) so that the listener is of the concrete type suitable to the particular DDSEntity.

If no listener is installed on the DDSEntity, this operation will return NULL.

Member Function Documentation

◆ enable()

virtual DDS_ReturnCode_t DDSEntity::enable ( )
pure virtual

Enables the DDSEntity.

This operation enables the Entity. Entity objects can be created either enabled or disabled. This is controlled by the value of the ENTITY_FACTORY QoS policy on the corresponding factory for the DDSEntity.

By default, ENTITY_FACTORY is set so that it is not necessary to explicitly call DDSEntity::enable on newly created entities.

The DDSEntity::enable operation is idempotent. Calling enable on an already enabled Entity returns OK and has no effect.

If a DDSEntity has not yet been enabled, the following kinds of operations may be invoked on it:

Other operations may explicitly state that they may be called on disabled entities; those that do not will return the error DDS_RETCODE_NOT_ENABLED.

It is legal to delete an DDSEntity that has not been enabled by calling the proper operation on its factory.

Entities created from a factory Entity that is disabled are created disabled, regardless of the setting of the DDS_EntityFactoryQosPolicy.

Calling enable on an Entity whose factory Entity is not enabled will fail and return DDS_RETCODE_PRECONDITION_NOT_MET.

If DDS_EntityFactoryQosPolicy::autoenable_created_entities is TRUE, the enable operation on a factory will automatically enable all entities created from that factory (for example, enabling a DDSPublisher will enable all its contained DDSDataWriter objects)

Listeners associated with an entity are not called until the entity is enabled.

Conditions associated with a disabled entity are "inactive," that is, they have a trigger_value == FALSE.

Returns
One of the Standard Return Codes, Standard Return Codes or DDS_RETCODE_PRECONDITION_NOT_MET.

Implemented in DDSDataReader, and DDSDataWriter.

◆ get_statuscondition()

virtual DDSStatusCondition* DDSEntity::get_statuscondition ( )
pure virtual

Allows access to the DDSStatusCondition associated with the DDSEntity.

The returned condition can then be added to a DDSWaitSet so that the application can wait for specific status changes that affect the DDSEntity.

Returns
the status condition associated with this entity.

Implemented in DDSDataReader, and DDSDataWriter.

◆ get_status_changes()

virtual DDS_StatusMask DDSEntity::get_status_changes ( )
pure virtual

Retrieves the list of communication statuses in the DDSEntity that are triggered.

That is, the list of statuses whose value has changed since the last time the application read the status using the get_*_status() method.

When the entity is first created or if the entity is not enabled, all communication statuses are in the "untriggered" state so the list returned by the get_status_changes operation will be empty.

The list of statuses returned by the get_status_changes operation refers to the status that are triggered on the Entity itself and does not include statuses that apply to contained entities.

Returns
list of communication statuses in the DDSEntity that are triggered.
See also
Status Kinds

Implemented in DDSDataReader, and DDSDataWriter.

◆ get_instance_handle()

virtual DDS_InstanceHandle_t DDSEntity::get_instance_handle ( )
pure virtual

Allows access to the DDS_InstanceHandle_t associated with the DDSEntity.

This operation returns the DDS_InstanceHandle_t that represents the DDSEntity.

Returns
the instance handle associated with this entity.

Implemented in DDSDataReader, and DDSDataWriter.