RTI Connext C++ API  Version 5.0.0
QoS Policies

Quality of Service (QoS) policies. More...


 Attaches a buffer of opaque data that is distributed by means of Built-in Topics during discovery.
 Attaches a buffer of opaque data that is distributed by means of Built-in Topics during discovery.
 Attaches a buffer of opaque data that is distributed by means of Built-in Topics during discovery.
 This QoS policy specifies whether or not RTI Connext will store and deliver previously published data samples to new DDSDataReader entities that join the network later.
 Specifies how the samples representing changes to data instances are presented to a subscribing application.
 Expresses the maximum duration (deadline) within which an instance is expected to be updated.
 Provides a hint as to the maximum acceptable delay from the time the data is written to the time it is received by the subscribing applications.
 Specifies whether it is allowed for multiple DDSDataWriter (s) to write the same instance of the data and if so, how these modifications should be arbitrated.
 Specifies the value of the strength used to arbitrate among multiple DDSDataWriter objects that attempt to modify the same instance of a data type (identified by DDSTopic + key).
 Specifies and configures the mechanism that allows DDSDataReader entities to detect when DDSDataWriter entities become disconnected or "dead.".
 Filter that allows a DDSDataReader to specify that it is interested only in (potentially) a subset of the values of the data.
 Set of strings that introduces a logical partition among the topics visible by a DDSPublisher and a DDSSubscriber.
 Indicates the level of reliability offered/requested by RTI Connext.
 Controls the criteria used to determine the logical order among changes made by DDSPublisher entities to the same instance of data (i.e., matching DDSTopic and key).
 Specifies the behavior of RTI Connext in the case where the value of an instance changes (one or more times) before it can be successfully communicated to one or more existing subscribers.
 Various settings to configure the external RTI Persistence Service used by RTI Connext for DataWriters with a DDS_DurabilityQosPolicy setting of DDS_PERSISTENT_DURABILITY_QOS or DDS_TRANSIENT_DURABILITY_QOS.
 Controls the amount of physical memory allocated for DDS entities, if dynamic allocations are allowed, and how they occur. Also controls memory usage among different instance values for keyed topics.
 This QoS policy allows the application to take advantage of transports that are capable of sending messages with different priorities.
 Specifies how long the data written by the DDSDataWriter is considered valid.
 Controls how a DataWriter handles the lifecycle of the instances (keys) that it is registered to manage.
 Controls how a DataReader manages the lifecycle of the data that it has received.
 A QoS policy for all DDSEntity types that can act as factories for one or more other DDSEntity types.
 Extended Qos Support
 <<eXtension>> Types and defines used in extended QoS policies.
 <<eXtension>> Specifies the physical transports that a DDSDataWriter or DDSDataReader may use to send or receive data.
 <<eXtension>> Specifies a subset of transports and a port number that can be used by an Entity to receive data.
 <<eXtension>> Specifies the multicast address on which a DDSDataReader wants to receive its data. It can also specify a port number, as well as a subset of the available (at the DDSDomainParticipant level) transports with which to receive the multicast data.
 <<eXtension>> Specifies a list of topic expressions and addresses that can be used by an Entity with a specific topic name to receive data.
 <<eXtension>> Specifies the attributes required to discover participants in the domain.
 <<eXtension>> Specifies which built-in transports are used.
 <<eXtension>> Specifies the wire protocol related attributes for the DDSDomainParticipant.
 <<eXtension>> Various settings that configure how DataReaders allocate and use physical memory for internal resources.
 <<eXtension>> Various settings that configure how a DDSDataWriter allocates and uses physical memory for internal resources.
 <<eXtension>> Specifies the DataReader-specific protocol QoS.
 <<eXtension>> Along with DDS_WireProtocolQosPolicy and DDS_DataReaderProtocolQosPolicy, this QoS policy configures the DDS on-the-network protocol (RTPS).
 <<eXtension>> Configures DomainParticipant-independent resources used by RTI Connext.
 <<eXtension>> Various settings that configure how a DDSDomainParticipant allocates and uses physical memory for internal resources, including the maximum sizes of various properties.
 <<eXtension>> Configures the internal thread in a DomainParticipant that handles timed events.
 <<eXtension>> Various threads and resource limits settings used by RTI Connext to control its internal database.
 <<eXtension>> Configures threads used by RTI Connext to receive and process data from transports (for example, UDP sockets).
 <<eXtension>> Specifies how RTI Connext sends application data on the network. This QoS policy can be used to tell RTI Connext to use its own thread to send data, instead of the user thread.
 <<eXtension>> Specifies the discovery configuration QoS.
 <<eXtension>> Specifies the asynchronous publishing settings of the DDSPublisher instances.
 <<eXtension>> Allows you to attach application-specific values to a DataWriter or DataReader that are passed to the serialization or deserialization routine of the associated data type.
 <<eXtension>> Configures multi-thread concurrency and deadlock prevention capabilities.
 <<eXtension>> Batch QoS policy used to enable batching in DDSDataWriter instances.
 Defines the rules for determining whether the type used to publish a given topic is consistent with that used to subscribe to it.
 <<eXtension>> The QoS policy used to report the configuration of a MultiChannel DataWriter as part of DDS_PublicationBuiltinTopicData.
 <<eXtension>> Configures the ability of a DataWriter to send data on different multicast groups (addresses) based on the value of the data.
 <<eXtension>> Stores name/value (string) pairs that can be used to configure certain parameters of RTI Connext that are not exposed through formal QoS policies. Can also be used to store and propagate application-specific name/value pairs that can be retrieved by user code during discovery.
 <<eXtension>> Configures the availability of data.
 <<eXtension>> Assigns a name to a DDSDomainParticipant. This name will be visible during the discovery process and in RTI tools to help you visualize and debug your system.
 <<eXtension>> Configures the way that XML documents containing QoS profiles are loaded by RTI Connext.
 <<eXtension>> Configures the RTI Connext logging facility.


struct  DDS_QosPolicyCount
 Type to hold a counter for a DDS_QosPolicyId_t. More...
struct  DDS_QosPolicyCountSeq
 Declares IDL sequence < DDS_QosPolicyCount > More...


 Number of QoS policies in DDS_QosPolicyId_t.


enum  DDS_QosPolicyId_t {
 Type to identify QosPolicies. More...

Detailed Description

Quality of Service (QoS) policies.

Data Distribution Service (DDS) relies on the use of QoS. A QoS is a set of characteristics that controls some aspect of the behavior of DDS. A QoS is comprised of individual QoS policies (objects conceptually deriving from an abstract QosPolicy class).

Supported QoS policies

The QosPolicy provides the basic mechanism for an application to specify quality of service parameters. It has an attribute name that is used to uniquely identify each QosPolicy.

QosPolicy implementation is comprised of a name, an ID, and a type. The type of a QosPolicy value may be atomic, such as an integer or float, or compound (a structure). Compound types are used whenever multiple parameters must be set coherently to define a consistent value for a QosPolicy.

QoS (i.e., a list of QosPolicy objects) may be associated with all DDSEntity objects in the system such as DDSTopic, DDSDataWriter, DDSDataReader, DDSPublisher, DDSSubscriber, and DDSDomainParticipant.

Specifying QoS on entities

QosPolicies can be set programmatically when an DDSEntity is created, or modified with the DDSEntity's set_qos (abstract) method.

QosPolicies can also be configured from XML resources (files, strings). With this approach, you can change the QoS without recompiling the application. For more information, see Configuring QoS Profiles with XML.

To customize a DDSEntity's QoS before creating the entity, the correct pattern is:

Each QosPolicy is treated independently from the others. This approach has the advantage of being very extensible. However, there may be cases where several policies are in conflict. Consistency checking is performed each time the policies are modified via the set_qos (abstract) operation, or when the DDSEntity is created.

When a policy is changed after being set to a given value, it is not required that the new value be applied instantaneously; RTI Connext is allowed to apply it after a transition phase. In addition, some QosPolicy have immutable semantics, meaning that they can only be specified either at DDSEntity creation time or else prior to calling the DDSEntity::enable operation on the entity.

Each DDSEntity can be configured with a list of QosPolicy objects. However, not all QosPolicies are supported by each DDSEntity. For instance, a DDSDomainParticipant supports a different set of QosPolicies than a DDSTopic or a DDSPublisher.

QoS compatibility

In several cases, for communications to occur properly (or efficiently), a QosPolicy on the publisher side must be compatible with a corresponding policy on the subscriber side. For example, if a DDSSubscriber requests to receive data reliably while the corresponding DDSPublisher defines a best-effort policy, communication will not happen as requested.

To address this issue and maintain the desirable decoupling of publication and subscription as much as possible, the QosPolicy specification follows the subscriber-requested, publisher-offered pattern.

In this pattern, the subscriber side can specify a "requested" value for a particular QosPolicy. The publisher side specifes an "offered" value for that QosPolicy. RTI Connext will then determine whether the value requested by the subscriber side is compatible with what is offered by the publisher side. If the two policies are compatible, then communication will be established. If the two policies are not compatible, RTI Connext will not establish communications between the two DDSEntity objects and will record this fact by means of the DDS_OFFERED_INCOMPATIBLE_QOS_STATUS on the publisher end and DDS_REQUESTED_INCOMPATIBLE_QOS_STATUS on the subscriber end. The application can detect this fact by means of a DDSListener or a DDSCondition.

The following properties are defined on a QosPolicy.

Macro Definition Documentation


Number of QoS policies in DDS_QosPolicyId_t.

Enumeration Type Documentation

Type to identify QosPolicies.


Identifier for an invalid QoS policy.


Identifier for DDS_UserDataQosPolicy.


Identifier for DDS_DurabilityQosPolicy.


Identifier for DDS_PresentationQosPolicy.


Identifier for DDS_DeadlineQosPolicy.


Identifier for DDS_LatencyBudgetQosPolicy.


Identifier for DDS_OwnershipQosPolicy.


Identifier for DDS_OwnershipStrengthQosPolicy.


Identifier for DDS_LivelinessQosPolicy.


Identifier for DDS_TimeBasedFilterQosPolicy.


Identifier for DDS_PartitionQosPolicy.


Identifier for DDS_ReliabilityQosPolicy.


Identifier for DDS_DestinationOrderQosPolicy.


Identifier for DDS_HistoryQosPolicy.


Identifier for DDS_ResourceLimitsQosPolicy.


Identifier for DDS_EntityFactoryQosPolicy.


Identifier for DDS_WriterDataLifecycleQosPolicy.


Identifier for DDS_ReaderDataLifecycleQosPolicy.


Identifier for DDS_TopicDataQosPolicy.


Identifier for DDS_GroupDataQosPolicy.


Identifier for DDS_TransportPriorityQosPolicy.


Identifier for DDS_LifespanQosPolicy.


Identifier for DDS_DurabilityServiceQosPolicy.


Identifier for DDS_TypeConsistencyEnforcementQosPolicy.


<<eXtension>> Identifier for DDS_WireProtocolQosPolicy


<<eXtension>> Identifier for DDS_DiscoveryQosPolicy


<<eXtension>> Identifier for DDS_DataReaderResourceLimitsQosPolicy


<<eXtension>> Identifier for DDS_DataWriterResourceLimitsQosPolicy


<<eXtension>> Identifier for DDS_DataReaderProtocolQosPolicy


<<eXtension>> Identifier for DDS_DataWriterProtocolQosPolicy


<<eXtension>> Identifier for DDS_DomainParticipantResourceLimitsQosPolicy


<<eXtension>> Identifier for DDS_EventQosPolicy


<<eXtension>> Identifier for DDS_DatabaseQosPolicy


<<eXtension>> Identifier for DDS_ReceiverPoolQosPolicy


<<eXtension>> Identifier for DDS_DiscoveryConfigQosPolicy


<<eXtension>> Identifier for DDS_ExclusiveAreaQosPolicy


<<eXtension>> Identifier for DDS_SystemResourceLimitsQosPolicy


<<eXtension>> Identifier for DDS_TransportSelectionQosPolicy


<<eXtension>> Identifier for DDS_TransportUnicastQosPolicy


<<eXtension>> Identifier for DDS_TransportMulticastQosPolicy


<<eXtension>> Identifier for DDS_TransportBuiltinQosPolicy


<<eXtension>> Identifier for DDS_TypeSupportQosPolicy


<<eXtension>> Identifier for DDS_PropertyQosPolicy


<<eXtension>> Identifier for DDS_PublishModeQosPolicy


<<eXtension>> Identifier for DDS_AsynchronousPublisherQosPolicy


<<eXtension>> Identifier for DDS_EntityNameQosPolicy


<<eXtension>> Identifier for DDS_BatchQosPolicy


<<eXtension>> Identifier for DDS_ProfileQosPolicy


<<eXtension>> Identifier for DDS_LocatorFilterQosPolicy


<<eXtension>> Identifier for DDS_MultiChannelQosPolicy


<<eXtension>> Identifier for DDS_AvailabilityQosPolicy


<<eXtension>> Identifier for DDS_LoggingQosPolicy

RTI Connext C++ API Version 5.0.0 Copyright © Thu Aug 30 2012 Real-Time Innovations, Inc