RTI Connext Modern C++ API  Version 6.0.1
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Flow Controllers

<<extension>> rti::pub::FlowController and associated elements More...

Classes

struct  rti::pub::FlowControllerSchedulingPolicy_def
 <<extension>> Kinds of flow controller shceduling policy More...
 
class  rti::pub::FlowControllerTokenBucketProperty
 <<extension>> <<value-type>> Configures a FlowController based on a tocken-bucket mechanism More...
 
class  rti::pub::FlowControllerProperty
 <<extension>> <<value-type>> Configures a FlowController More...
 
class  rti::pub::FlowController
 <<extension>> <<reference-type>> A flow controller is the object responsible for shaping the network traffic by determining when attached asynchronous dds::pub::DataWriter instances are allowed to write data. More...
 

Typedefs

typedef dds::core::safe_enum
< FlowControllerSchedulingPolicy_def > 
rti::pub::FlowControllerSchedulingPolicy
 <<extension>> The safe enumeration for FlowControllerSchedulingPolicy_def::type
 

Variables

static
OMG_DDS_API_CLASS_VARIABLE
const std::string 
rti::pub::FlowController::DEFAULT_NAME
 Name that identifies the built-in default FlowController.
 
static
OMG_DDS_API_CLASS_VARIABLE
const std::string 
rti::pub::FlowController::FIXED_RATE_NAME
 Name that identifies the built-in fixed-rate FlowController.
 
static
OMG_DDS_API_CLASS_VARIABLE
const std::string 
rti::pub::FlowController::ON_DEMAND_NAME
 Name that identifies the built-in on-demand FlowController.
 

Detailed Description

<<extension>> rti::pub::FlowController and associated elements

rti::pub::FlowController provides the network traffic shaping capability to asynchronous dds::pub::DataWriter instances. For use cases and advantages of publishing asnychronously, please refer to rti::core::policy::PublishMode of dds::pub::qos::DataWriterQos.

See Also
rti::core::policy::PublishMode
rti::core::policy::PublishMode
rti::core::policy::AsynchronousPublisher

Typedef Documentation

Variable Documentation

OMG_DDS_API_CLASS_VARIABLE const std::string rti::pub::FlowController::DEFAULT_NAME
static

Name that identifies the built-in default FlowController.

RTI Connext provides several built-in rti::pub::FlowController for use with an asynchronous dds::pub::DataWriter. The user can choose to use the built-in flow controllers and optionally modify their properties or can create a custom flow controller.

By default, flow control is disabled. That is, the built-in FlowController::DEFAULT_NAME flow controller does not apply any flow control. Instead, it allows data to be sent asynchronously as soon as it is written by the dds::pub::DataWriter.

Essentially, this is equivalent to a user-created rti::pub::FlowController with the following rti::pub::FlowControllerProperty settings:

- rti::pub::FlowControllerProperty::scheduling_policy = FlowControllerSchedulingPolicy_def::EARLIEST_DEADLINE_FIRST

- rti::pub::FlowControllerProperty::token_bucket max_tokens = dds::core::LENGTH_UNLIMITED

- rti::pub::FlowControllerProperty::token_bucket tokens_added_per_period = dds::core::LENGTH_UNLIMITED

- rti::pub::FlowControllerProperty::token_bucket tokens_leaked_per_period = 0

- rti::pub::FlowControllerProperty::token_bucket period = 1 second

- rti::pub::FlowControllerProperty::token_bucket bytes_per_token = dds::core::LENGTH_UNLIMITED

See Also
dds::pub::DataWriter constructors
dds::domain::DomainParticipant::rti::pub::lookup_flow_controller
rti::pub::FlowController::set_property
rti::core::policy::PublishMode
rti::core::policy::AsynchronousPublisher
OMG_DDS_API_CLASS_VARIABLE const std::string rti::pub::FlowController::FIXED_RATE_NAME
static

Name that identifies the built-in fixed-rate FlowController.

RTI Connext provides several builtin rti::pub::FlowController for use with an asynchronous dds::pub::DataWriter. The user can choose to use the built-in flow controllers and optionally modify their properties or can create a custom flow controller.

The built-in FlowController::FIXED_RATE_NAME flow controller shapes the network traffic by allowing data to be sent only once every second. Any accumulated samples destined for the same destination are coalesced into as few network packets as possible.

Essentially, this is equivalent to a user-created rti::pub::FlowController with the following rti::pub::FlowControllerProperty settings:

- rti::pub::FlowControllerProperty::scheduling_policy = FlowControllerSchedulingPolicy_def::EARLIEST_DEADLINE_FIRST

- rti::pub::FlowControllerProperty::token_bucket max_tokens = dds::core::LENGTH_UNLIMITED

- rti::pub::FlowControllerProperty::token_bucket tokens_added_per_period = dds::core::LENGTH_UNLIMITED

- rti::pub::FlowControllerProperty::token_bucket tokens_leaked_per_period = dds::core::LENGTH_UNLIMITED

- rti::pub::FlowControllerProperty::token_bucket period = 1 second

- rti::pub::FlowControllerProperty::token_bucket bytes_per_token = dds::core::LENGTH_UNLIMITED

See Also
dds::pub::DataWriter constructors
dds::domain::DomainParticipant::rti::pub::lookup_flow_controller
rti::pub::FlowController::set_property
rti::core::policy::PublishMode
rti::core::policy::AsynchronousPublisher
OMG_DDS_API_CLASS_VARIABLE const std::string rti::pub::FlowController::ON_DEMAND_NAME
static

Name that identifies the built-in on-demand FlowController.

RTI Connext provides several builtin rti::pub::FlowController for use with an asynchronous dds::pub::DataWriter. The user can choose to use the built-in flow controllers and optionally modify their properties or can create a custom flow controller.

The built-in FlowController::ON_DEMAND_NAME allows data to be sent only when the user calls rti::pub::FlowController::trigger_flow. With each trigger, all accumulated data since the previous trigger is sent (across all dds::pub::Publisher or dds::pub::DataWriter instances). In other words, the network traffic shape is fully controlled by the user. Any accumulated samples destined for the same destination are coalesced into as few network packets as possible.

This external trigger source is ideal for users who want to implement some form of closed-loop flow control or who want to only put data on the wire every so many samples (e.g. with the number of samples based on Transport_Property_t::gather_send_buffer_count_max).

Essentially, this is equivalent to a user-created rti::pub::FlowController with the following rti::pub::FlowControllerProperty settings:

- rti::pub::FlowControllerProperty::scheduling_policy = FlowControllerSchedulingPolicy_def::EARLIEST_DEADLINE_FIRST

- rti::pub::FlowControllerProperty::token_bucket max_tokens = dds::core::LENGTH_UNLIMITED

- rti::pub::FlowControllerProperty::token_bucket tokens_added_per_period = dds::core::LENGTH_UNLIMITED

- rti::pub::FlowControllerProperty::token_bucket tokens_leaked_per_period = dds::core::LENGTH_UNLIMITED

- rti::pub::FlowControllerProperty::token_bucket period = dds::core::Duration::infinite()

- rti::pub::FlowControllerProperty::token_bucket bytes_per_token = dds::core::LENGTH_UNLIMITED

See Also
dds::pub::DataWriter constructors
dds::domain::DomainParticipant::rti::pub::lookup_flow_controller
rti::pub::FlowController::trigger_flow
rti::pub::FlowController::set_property
rti::core::policy::PublishMode
rti::core::policy::AsynchronousPublisher

RTI Connext Modern C++ API Version 6.0.1 Copyright © Sat Nov 23 2019 Real-Time Innovations, Inc