RTI Connext C API Version 7.3.0
DDS_AsynchronousPublisherQosPolicy Struct Reference

Configures the mechanism that sends user data in an external middleware thread. More...

Data Fields

DDS_Boolean disable_asynchronous_write
 Disable asynchronous publishing. More...
 
struct DDS_ThreadSettings_t thread
 Settings of the publishing thread. More...
 
DDS_Boolean disable_asynchronous_batch
 Disable asynchronous batch flushing. More...
 
struct DDS_ThreadSettings_t asynchronous_batch_thread
 Settings of the batch flushing thread. More...
 
DDS_Boolean disable_topic_query_publication
 Disable topic query publication. More...
 
struct DDS_ThreadSettings_t topic_query_publication_thread
 Settings of the DDS_TopicQuery publication thread. More...
 

Detailed Description

Configures the mechanism that sends user data in an external middleware thread.

Specifies the asynchronous publishing and asynchronous batch flushing settings of the DDS_Publisher instances.

The QoS policy specifies whether asynchronous publishing and asynchronous batch flushing are enabled for the DDS_DataWriter entities belonging to this DDS_Publisher. If so, the publisher will spawn up to two threads, one for asynchronous publishing and one for asynchronous batch flushing.

This policy also configures the settings of the DDS_TopicQuery publication thread. The publisher will spawn this thread only if one or more DataWriters enable TopicQueries.

See also
DDS_BatchQosPolicy.
DDS_PublishModeQosPolicy.
Entity:
DDS_Publisher
Properties:
RxO = N/A

Changeable = NO

Usage

You can use this QoS policy to reduce the amount of time your application thread spends sending data.

You can also use it, along with DDS_PublishModeQosPolicy and a DDS_FlowController, to send large data reliably. "Large" in this context means that the data that cannot be sent as a single packet by a network transport. For example, to send data larger than 63K reliably using UDP/IP, you must configure RTI Connext to fragment the data and send it asynchronously.

The asynchronous publisher thread is shared by all DDS_ASYNCHRONOUS_PUBLISH_MODE_QOS DDS_DataWriter instances that belong to this publisher and handles their data transmission chores.

The asynchronous batch flushing thread is shared by all DDS_DataWriter instances with batching enabled that belong to this publisher.

This QoS policy also allows you to adjust the settings of the asynchronous publishing and the asynchronous batch flushing threads. To use different threads for two different DDS_DataWriter entities, the instances must belong to different DDS_Publisher instances.

A DDS_Publisher must have asynchronous publishing enabled for its DDS_DataWriter instances to write asynchronously.

A DDS_Publisher must have asynchronous batch flushing enabled in order to flush the batches of its DDS_DataWriter instances asynchronously. However, no asynchronous batch flushing thread will be started until the first DDS_DataWriter instance with batching enabled is created from this DDS_Publisher.

Field Documentation

◆ disable_asynchronous_write

DDS_Boolean DDS_AsynchronousPublisherQosPolicy::disable_asynchronous_write

Disable asynchronous publishing.

If set to DDS_BOOLEAN_TRUE, any DDS_DataWriter created with DDS_ASYNCHRONOUS_PUBLISH_MODE_QOS will fail with DDS_RETCODE_INCONSISTENT_POLICY.

[default] DDS_BOOLEAN_FALSE

◆ thread

struct DDS_ThreadSettings_t DDS_AsynchronousPublisherQosPolicy::thread

Settings of the publishing thread.

There is only one asynchronous publishing thread per DDS_Publisher.

[default] priority below normal.
The actual value depends on your architecture:

For Windows: -2
For Linux: OS default priority
For a complete list of platform specific values, please refer to Platform Notes.

[default] The actual value depends on your architecture:

For Windows: OS default stack size
For Linux: OS default stack size
For a complete list of platform specific values, please refer to Platform Notes.

[default] mask = DDS_THREAD_SETTINGS_KIND_MASK_DEFAULT

◆ disable_asynchronous_batch

DDS_Boolean DDS_AsynchronousPublisherQosPolicy::disable_asynchronous_batch

Disable asynchronous batch flushing.

If set to DDS_BOOLEAN_TRUE, any DDS_DataWriter created with batching enabled will fail with DDS_RETCODE_INCONSISTENT_POLICY.

If DDS_BatchQosPolicy::max_flush_delay is different than DDS_DURATION_INFINITE, DDS_AsynchronousPublisherQosPolicy::disable_asynchronous_batch must be set DDS_BOOLEAN_FALSE.

[default] DDS_BOOLEAN_FALSE

◆ asynchronous_batch_thread

struct DDS_ThreadSettings_t DDS_AsynchronousPublisherQosPolicy::asynchronous_batch_thread

Settings of the batch flushing thread.

There is only one asynchronous batch flushing thread per DDS_Publisher.

[default] priority below normal.
The actual value depends on your architecture:

For Windows: -2
For Linux: OS default priority
For a complete list of platform specific values, please refer to Platform Notes. [default] The actual value depends on your architecture:

For Windows: OS default stack size
For Linux: OS default stack size
For a complete list of platform specific values, please refer to Platform Notes.

[default] mask = DDS_THREAD_SETTINGS_KIND_MASK_DEFAULT

◆ disable_topic_query_publication

DDS_Boolean DDS_AsynchronousPublisherQosPolicy::disable_topic_query_publication

Disable topic query publication.

If set to DDS_BOOLEAN_TRUE, any DDS_DataWriter created with DDS_TopicQueryDispatchQosPolicy::enable set to DDS_BOOLEAN_TRUE will fail with DDS_RETCODE_INCONSISTENT_POLICY.

[default] DDS_BOOLEAN_FALSE

◆ topic_query_publication_thread

struct DDS_ThreadSettings_t DDS_AsynchronousPublisherQosPolicy::topic_query_publication_thread

Settings of the DDS_TopicQuery publication thread.

There is only one TopicQuery publication thread per DDS_Publisher. This thread will exist as long as one or more DDS_DataWriter enables TopicQueries (via DDS_DataWriterQos::topic_query_dispatch).

[default] priority below normal.
The actual value depends on your architecture:

For Windows: -2
For Linux: OS default priority
For a complete list of platform specific values, please refer to Platform Notes. [default] The actual value depends on your architecture:

For Windows: OS default stack size
For Linux: OS default stack size
For a complete list of platform specific values, please refer to Platform Notes.

[default] mask = DDS_THREAD_SETTINGS_KIND_MASK_DEFAULT