You are here: Part 2: Core Concepts > Sending Data > FlowControllers (DDS Extension)

FlowControllers (DDS Extension)

This section does not apply when using the separate add-on product, Ada Language Support, which does not support FlowControllers.

A FlowController is the object responsible for shaping the network traffic by determining when attached asynchronous DataWriters are allowed to write data.

You can use one of the built-in FlowControllers (and optionally modify their properties), create a custom FlowController by using the DomainParticipant’s create_flowcontroller() operation (see Creating and Deleting FlowControllers), or create a custom FlowController by using the DomainParticipant's PROPERTY QosPolicy (DDS Extension) ; see Creating and Configuring Custom FlowControllers with Property QoS.

To use a FlowController, you provide its name in the DataWriter’s PUBLISH_MODE QosPolicy (DDS Extension).

The default property settings for the built-in FlowControllers are described in the API Reference HTML documentation.

DDS samples written by an asynchronous DataWriter are not sent in the context of the write() call. Instead, Connext DDS puts the DDS samples in a queue for future processing. The FlowController associated with each asynchronous DataWriter determines when the DDS samples are actually sent.

Each FlowController maintains a separate FIFO queue for each unique destination (remote application). DDS samples written by asynchronous DataWriters associated with the FlowController are placed in the queues that correspond to the intended destinations of the DDS sample.

When tokens become available, a FlowController must decide which queue(s) to grant tokens first. This is determined by the FlowController's scheduling_policy property (see Table 71 ). Once a queue has been granted tokens, it is serviced by the asynchronous publishing thread. The queued up DDS samples will be coalesced and sent to the corresponding destination. The number of DDS samples sent depends on the data size and the number of tokens granted.

Table 71 lists the properties for a FlowController.

Table 71 DDS_FlowControllerProperty_t


Field Name




Round robin, earliest deadline first, or highest priority first. See Flow Controller Scheduling Policies.



See Token Bucket Properties.

Table 72 lists the operations available for a FlowController.

Table 72 FlowController Operations





Get and Set the FlowController properties.

Getting/Setting Properties for a Specific FlowController



Provides an external trigger to the FlowController.

Adding an External Trigger


Returns the name of the FlowController.

Other FlowController Operations


Returns the DomainParticipant to which the FlowController belongs.

© 2015 RTI