RTI Connext C API Version 7.4.0
FlowController Use Cases

Working with flow controllers.

Working with flow controllers.

Creating a flow controller

Flow controlling a data writer

Using the built-in flow controllers

RTI Connext provides several built-in flow controllers.

The DDS_DEFAULT_FLOW_CONTROLLER_NAME built-in flow controller provides the basic asynchronous writer behavior. When calling FooDataWriter_write, the call signals the DDS_Publisher asynchronous publishing thread (DDS_PublisherQos::asynchronous_publisher) to send the actual data. As with any DDS_ASYNCHRONOUS_PUBLISH_MODE_QOS DDS_DataWriter, the FooDataWriter_write call returns immediately afterwards. The data is sent immediately in the context of the DDS_Publisher asynchronous publishing thread.

When using the DDS_FIXED_RATE_FLOW_CONTROLLER_NAME flow controller, data is also sent in the context of the DDS_Publisher asynchronous publishing thread, but at a regular fixed interval. The thread accumulates samples from different DDS_DataWriter instances and generates data on the wire only once per DDS_FlowControllerTokenBucketProperty_t::period.

In contrast, the DDS_ON_DEMAND_FLOW_CONTROLLER_NAME flow controller permits flow only when DDS_FlowController_trigger_flow is called. The data is still sent in the context of the DDS_Publisher asynchronous publishing thread. The thread accumulates samples from different DDS_DataWriter instances (across any DDS_Publisher) and sends all data since the previous trigger.

The properties of the built-in DDS_FlowController instances can be adjusted.

Shaping the network traffic for a particular transport

Coalescing multiple samples in a single network packet