QoS Policies
[Infrastructure Module]

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


Modules

 USER_DATA
 Attaches a buffer of opaque data that is distributed by means of Built-in Topics during discovery.
 TOPIC_DATA
 Attaches a buffer of opaque data that is distributed by means of Built-in Topics during discovery.
 GROUP_DATA
 Attaches a buffer of opaque data that is distributed by means of Built-in Topics during discovery.
 DURABILITY
 This QoS policy specifies whether or not RTI Data Distribution Service will store and deliver previously published data samples to new DDS::DataReader entities that join the network later.
 PRESENTATION
 Specifies how the samples representing changes to data instances are presented to a subscribing application.
 DEADLINE
 Expresses the maximum duration (deadline) within which an instance is expected to be updated.
 LATENCY_BUDGET
 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.
 OWNERSHIP
 Specifies whether it is allowed for multiple DDS::DataWriter (s) to write the same instance of the data and if so, how these modifications should be arbitrated.
 OWNERSHIP_STRENGTH
 Specifies the value of the strength used to arbitrate among multiple DDS::DataWriter objects that attempt to modify the same instance of a data type (identified by DDS::Topic + key).
 LIVELINESS
 Specifies and configures the mechanism that allows DDS::DataReader entities to detect when DDS::DataWriter entities become disconnected or "dead.".
 TIME_BASED_FILTER
 Filter that allows a DDS::DataReader to specify that it is interested only in (potentially) a subset of the values of the data.
 PARTITION
 Set of strings that introduces a logical partition among the topics visible by a DDS::Publisher and a DDS::Subscriber.
 RELIABILITY
 Indicates the level of reliability offered/requested by RTI Data Distribution Service.
 DESTINATION_ORDER
 Controls the criteria used to determine the logical order among changes made by DDS::Publisher entities to the same instance of data (i.e., matching DDS::Topic and key).
 HISTORY
 Specifies the behavior of RTI Data Distribution Service 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.
 DURABILITY_SERVICE
 Various settings to configure the external RTI Persistence Service used by RTI Data Distribution Service for DataWriters with a DDS::DurabilityQosPolicy setting of DDS::DurabilityQosPolicyKind::PERSISTENT_DURABILITY_QOS or DDS::DurabilityQosPolicyKind::TRANSIENT_DURABILITY_QOS.
 RESOURCE_LIMITS
 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.
 TRANSPORT_PRIORITY
 This QoS policy allows the application to take advantage of transports that are capable of sending messages with different priorities.
 LIFESPAN
 Specifies how long the data written by the DDS::DataWriter is considered valid.
 WRITER_DATA_LIFECYCLE
 Controls how a DataWriter handles the lifecycle of the instances (keys) that it is registered to manage.
 READER_DATA_LIFECYCLE
 Controls how a DataReader manages the lifecycle of the data that it has received.
 ENTITY_FACTORY
 A QoS policy for all DDS::Entity types that can act as factories for one or more other DDS::Entity types.
 Extended Qos Support
 <<eXtension>> Types and defines used in extended QoS policies.
 TRANSPORT_SELECTION
 <<eXtension>> Specifies the physical transports a DDS::DataWriter or DDS::DataReader may use to send or receive data.
 TRANSPORT_UNICAST
 <<eXtension>> Specifies a subset of transports and a port number that can be used by an Entity to receive data.
 TRANSPORT_MULTICAST
 <<eXtension>> Specifies the multicast address on which a DDS::DataReader wants to receive its data. It can also specify a port number, as well as a subset of the available (at the DDS::DomainParticipant level) transports with which to receive the multicast data.
 DISCOVERY
 <<eXtension>> Specifies the attributes required to discover participants in the domain.
 TRANSPORT_BUILTIN
 <<eXtension>> Specifies which built-in transports are used.
 WIRE_PROTOCOL
 <<eXtension>> Specifies the wire protocol related attributes for the DDS::DomainParticipant.
 DATA_READER_RESOURCE_LIMITS
 <<eXtension>> Various settings that configure how DataReaders allocate and use physical memory for internal resources.
 DATA_WRITER_RESOURCE_LIMITS
 <<eXtension>> Various settings that configure how a DDS::DataWriter allocates and uses physical memory for internal resources.
 DATA_READER_PROTOCOL
 <<eXtension>> Specifies the DataReader-specific protocol QoS.
 DATA_WRITER_PROTOCOL
 <<eXtension>> Along with DDS::WireProtocolQosPolicy and DDS::DataReaderProtocolQosPolicy, this QoS policy configures the DDS on-the-network protocol (RTPS).
 SYSTEM_RESOURCE_LIMITS
 <<eXtension>> Configures DomainParticipant-independent resources used by RTI Data Distribution Service.
 DOMAIN_PARTICIPANT_RESOURCE_LIMITS
 <<eXtension>> Various settings that configure how a DDS::DomainParticipant allocates and uses physical memory for internal resources, including the maximum sizes of various properties.
 EVENT
 <<eXtension>> Configures the internal thread in a DomainParticipant that handles timed events.
 DATABASE
 <<eXtension>> Various threads and resource limits settings used by RTI Data Distribution Service to control its internal database.
 RECEIVER_POOL
 <<eXtension>> Configures threads used by RTI Data Distribution Service to receive and process data from transports (for example, UDP sockets).
 PUBLISH_MODE
 <<eXtension>> Specifies how RTI Data Distribution Service sends application data on the network. This QoS policy can be used to tell RTI Data Distribution Service to use its own thread to send data, instead of the user thread.
 DISCOVERY_CONFIG
 <<eXtension>> Specifies the discovery configuration QoS.
 TYPESUPPORT
 <<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.
 ASYNCHRONOUS_PUBLISHER
 <<eXtension>> Specifies the asynchronous publishing settings of the DDS::Publisher instances.
 EXCLUSIVE_AREA
 <<eXtension>> Configures multi-thread concurrency and deadlock prevention capabilities.
 BATCH
 <<eXtension>> Batch QoS policy used to enable batching in DDS::DataWriter instances.
 LOCATORFILTER
 <<eXtension>> The QoS policy used to report the configuration of a MultiChannel DataWriter as part of DDS::PublicationBuiltinTopicData.
 MULTICHANNEL
 <<eXtension>> Configures the ability of a DataWriter to send data on different multicast groups (addresses) based on the value of the data.
 PROPERTY
 <<eXtension>> Stores name/value (string) pairs that can be used to configure certain parameters of RTI Data Distribution Service 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.
 ENTITY_NAME
 <<eXtension>> Assigns a name to a DDS::DomainParticipant. This name will be visible during the discovery process and in RTI tools to help you visualize and debug your system.
 PROFILE
 <<eXtension>> Configures the way that XML documents containing QoS profiles are loaded by RTI Data Distribution Service.
 LOGGING
 <<eXtension>> Configures the RTI Data Distribution Service logging facility.

Classes

struct  DDS::QosPolicyCount
 Type to hold a counter for a DDS::QosPolicyId_t. More...
class  DDS::QosPolicyCountSeq
 Declares IDL sequence < DDS::QosPolicyCount >. More...

Enumerations

enum  DDS::QosPolicyId_t {
  DDS::INVALID_QOS_POLICY_ID,
  DDS::USERDATA_QOS_POLICY_ID,
  DDS::DURABILITY_QOS_POLICY_ID,
  DDS::PRESENTATION_QOS_POLICY_ID,
  DDS::DEADLINE_QOS_POLICY_ID,
  DDS::LATENCYBUDGET_QOS_POLICY_ID,
  DDS::OWNERSHIP_QOS_POLICY_ID,
  DDS::OWNERSHIPSTRENGTH_QOS_POLICY_ID,
  DDS::LIVELINESS_QOS_POLICY_ID,
  DDS::TIMEBASEDFILTER_QOS_POLICY_ID,
  DDS::PARTITION_QOS_POLICY_ID,
  DDS::RELIABILITY_QOS_POLICY_ID,
  DDS::DESTINATIONORDER_QOS_POLICY_ID,
  DDS::HISTORY_QOS_POLICY_ID,
  DDS::RESOURCELIMITS_QOS_POLICY_ID,
  DDS::ENTITYFACTORY_QOS_POLICY_ID,
  DDS::WRITERDATALIFECYCLE_QOS_POLICY_ID,
  DDS::READERDATALIFECYCLE_QOS_POLICY_ID,
  DDS::TOPICDATA_QOS_POLICY_ID,
  DDS::GROUPDATA_QOS_POLICY_ID,
  DDS::TRANSPORTPRIORITY_QOS_POLICY_ID,
  DDS::LIFESPAN_QOS_POLICY_ID,
  DDS::DURABILITYSERVICE_QOS_POLICY_ID,
  DDS::WIREPROTOCOL_QOS_POLICY_ID,
  DDS::DISCOVERY_QOS_POLICY_ID,
  DDS::DATAREADERRESOURCELIMITS_QOS_POLICY_ID,
  DDS::DATAWRITERRESOURCELIMITS_QOS_POLICY_ID,
  DDS::DATAREADERPROTOCOL_QOS_POLICY_ID,
  DDS::DATAWRITERPROTOCOL_QOS_POLICY_ID,
  DDS::DOMAINPARTICIPANTRESOURCELIMITS_QOS_POLICY_ID,
  DDS::EVENT_QOS_POLICY_ID,
  DDS::DATABASE_QOS_POLICY_ID,
  DDS::RECEIVERPOOL_QOS_POLICY_ID,
  DDS::DISCOVERYCONFIG_QOS_POLICY_ID,
  DDS::EXCLUSIVEAREA_QOS_POLICY_ID ,
  DDS::SYSTEMRESOURCELIMITS_QOS_POLICY_ID,
  DDS::TRANSPORTSELECTION_QOS_POLICY_ID,
  DDS::TRANSPORTUNICAST_QOS_POLICY_ID,
  DDS::TRANSPORTMULTICAST_QOS_POLICY_ID,
  DDS::TRANSPORTBUILTIN_QOS_POLICY_ID,
  DDS::TYPESUPPORT_QOS_POLICY_ID,
  DDS::PROPERTY_QOS_POLICY_ID,
  DDS::PUBLISHMODE_QOS_POLICY_ID,
  DDS::ASYNCHRONOUSPUBLISHER_QOS_POLICY_ID,
  DDS::ENTITYNAME_QOS_POLICY_ID ,
  DDS::DDS_BATCH_QOS_POLICY_ID,
  DDS::DDS_PROFILE_QOS_POLICY_ID,
  DDS::DDS_LOCATORFILTER_QOS_POLICY_ID,
  DDS::DDS_MULTICHANNEL_QOS_POLICY_ID
}
 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).

DDSQosPolicies.png

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 DDS::Entity objects in the system such as DDS::Topic, DDS::DataWriter, DDS::DataReader, DDS::Publisher, DDS::Subscriber, and DDS::DomainParticipant.

Specifying QoS on entities

QosPolicies can be set programmatically when an DDS::Entity is created, or modified with the DDS::Entity'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 DDS::Entity'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 DDS::Entity 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 Data Distribution Service 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 DDS::Entity creation time or else prior to calling the DDS::Entity::enable operation on the entity.

Each DDS::Entity can be configured with a list of QosPolicy objects. However, not all QosPolicies are supported by each DDS::Entity. For instance, a DDS::DomainParticipant supports a different set of QosPolicies than a DDS::Topic or a DDS::Publisher.

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 DDS::Subscriber requests to receive data reliably while the corresponding DDS::Publisher 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 Data Distribution Service 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 Data Distribution Service will not establish communications between the two DDS::Entity objects and will record this fact by means of the DDS::StatusKind::OFFERED_INCOMPATIBLE_QOS_STATUS on the publisher end and DDS::StatusKind::REQUESTED_INCOMPATIBLE_QOS_STATUS on the subscriber end. The application can detect this fact by means of a DDS::Listener or a DDS::Condition.

The following properties are defined on a QosPolicy.


Enumeration Type Documentation

Type to identify QosPolicies.

Enumerator:
INVALID_QOS_POLICY_ID  Identifier for an invalid QoS policy.
USERDATA_QOS_POLICY_ID  Identifier for DDS::UserDataQosPolicy.
DURABILITY_QOS_POLICY_ID  Identifier for DDS::DurabilityQosPolicy.
PRESENTATION_QOS_POLICY_ID  Identifier for DDS::PresentationQosPolicy.
DEADLINE_QOS_POLICY_ID  Identifier for DDS::DeadlineQosPolicy.
LATENCYBUDGET_QOS_POLICY_ID  Identifier for DDS::LatencyBudgetQosPolicy.
OWNERSHIP_QOS_POLICY_ID  Identifier for DDS::OwnershipQosPolicy.
OWNERSHIPSTRENGTH_QOS_POLICY_ID  Identifier for DDS::OwnershipStrengthQosPolicy.
LIVELINESS_QOS_POLICY_ID  Identifier for DDS::LivelinessQosPolicy.
TIMEBASEDFILTER_QOS_POLICY_ID  Identifier for DDS::TimeBasedFilterQosPolicy.
PARTITION_QOS_POLICY_ID  Identifier for DDS::PartitionQosPolicy.
RELIABILITY_QOS_POLICY_ID  Identifier for DDS::ReliabilityQosPolicy.
DESTINATIONORDER_QOS_POLICY_ID  Identifier for DDS::DestinationOrderQosPolicy.
HISTORY_QOS_POLICY_ID  Identifier for DDS::HistoryQosPolicy.
RESOURCELIMITS_QOS_POLICY_ID  Identifier for DDS::ResourceLimitsQosPolicy.
ENTITYFACTORY_QOS_POLICY_ID  Identifier for DDS::EntityFactoryQosPolicy.
WRITERDATALIFECYCLE_QOS_POLICY_ID  Identifier for DDS::WriterDataLifecycleQosPolicy.
READERDATALIFECYCLE_QOS_POLICY_ID  Identifier for DDS::ReaderDataLifecycleQosPolicy.
TOPICDATA_QOS_POLICY_ID  Identifier for DDS::TopicDataQosPolicy.
GROUPDATA_QOS_POLICY_ID  Identifier for DDS::GroupDataQosPolicy.
TRANSPORTPRIORITY_QOS_POLICY_ID  Identifier for DDS::TransportPriorityQosPolicy.
LIFESPAN_QOS_POLICY_ID  Identifier for DDS::LifespanQosPolicy.
DURABILITYSERVICE_QOS_POLICY_ID  Identifier for DDS::DurabilityServiceQosPolicy.
WIREPROTOCOL_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::WireProtocolQosPolicy
DISCOVERY_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::DiscoveryQosPolicy
DATAREADERRESOURCELIMITS_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::DataReaderResourceLimitsQosPolicy
DATAWRITERRESOURCELIMITS_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::DataWriterResourceLimitsQosPolicy
DATAREADERPROTOCOL_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::DataReaderProtocolQosPolicy
DATAWRITERPROTOCOL_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::DataWriterProtocolQosPolicy
DOMAINPARTICIPANTRESOURCELIMITS_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::DomainParticipantResourceLimitsQosPolicy
EVENT_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::EventQosPolicy
DATABASE_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::DatabaseQosPolicy
RECEIVERPOOL_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::ReceiverPoolQosPolicy
DISCOVERYCONFIG_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::DiscoveryConfigQosPolicy
EXCLUSIVEAREA_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::ExclusiveAreaQosPolicy
SYSTEMRESOURCELIMITS_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::SystemResourceLimitsQosPolicy
TRANSPORTSELECTION_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::TransportSelectionQosPolicy
TRANSPORTUNICAST_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::TransportUnicastQosPolicy
TRANSPORTMULTICAST_QOS_POLICY_ID  <<eXtension>> Identifier for
TRANSPORTBUILTIN_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::TransportBuiltinQosPolicy
TYPESUPPORT_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::TypeSupportQosPolicy
PROPERTY_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::PropertyQosPolicy
PUBLISHMODE_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::PublishModeQosPolicy
ASYNCHRONOUSPUBLISHER_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::AsynchronousPublisherQosPolicy
ENTITYNAME_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::EntityNameQosPolicy
DDS_BATCH_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::BatchQosPolicy
DDS_PROFILE_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::ProfileQosPolicy
DDS_LOCATORFILTER_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::LocatorFilterQosPolicy
DDS_MULTICHANNEL_QOS_POLICY_ID  <<eXtension>> Identifier for DDS::MultiChannelQosPolicy


RTI Data Distribution Service .Net APIs Version 4.5e Copyright © 23 Oct 2011 Real-Time Innovations, Inc