#include <managed_infrastructure.h>
Static Public Member Functions | |
static System::String^ | get_batch_qos_policy_name () |
Stringified human-readable name for DDS::BatchQosPolicy. | |
Public Attributes | |
System::Int32 | max_data_bytes |
The maximum cumulative length of all serialized samples in a batch. | |
System::Int32 | max_samples |
The maximum number of samples in a batch. | |
Duration_t | max_flush_delay |
The maximum flush delay. | |
Duration_t | source_timestamp_resolution |
Batch source timestamp resolution. | |
Properties | |
System::Boolean | enable [get, set] |
Specifies whether or not batching is enabled. | |
System::Boolean | thread_safe_write [get, set] |
Determines whether or not the write operation is thread safe. |
This QoS policy configures the ability of the middleware to collect multiple user data samples to be sent in a single network packet, to take advantage of the efficiency of sending larger packets and thus increase effective throughput.
This QoS policy can be used to dramatically increase effective throughput for small data samples. Usually, throughput for small samples (size < 2048 bytes) is limited by CPU capacity and not by network bandwidth. Batching many smaller samples to be sent in a single large packet will increase network utilization, and thus throughput, in terms of samples per second.
System::Int32 DDS::BatchQosPolicy::max_data_bytes |
The maximum cumulative length of all serialized samples in a batch.
A batch is flushed automatically when this maximum is reached.
max_data_bytes does not include the meta data associated with the batch samples. Each sample has at least 8 bytes of meta data containing information such as the timestamp and sequence number. The meta data can be as large as 52 bytes for keyed topics and 20 bytes for unkeyed topics.
Note: Batches must contain whole samples. If a new batch is started and its initial sample causes the serialized size to exceed max_data_bytes, RTI Data Distribution Service will send the sample in a single batch.
[default] 1024
[range] [1,DDS::LENGTH_UNLIMITED]
System::Int32 DDS::BatchQosPolicy::max_samples |
The maximum number of samples in a batch.
A batch is flushed automatically when this maximum is reached.
[default] DDS::LENGTH_UNLIMITED
[range] [1,DDS::LENGTH_UNLIMITED]
The maximum flush delay.
A batch is flushed automatically after the delay specified by this parameter.
The delay is measured from the time the first sample in the batch is written by the application.
[default] DDS::Duration_t::DURATION_INFINITE
[range] [0,DDS::Duration_t::DURATION_INFINITE]
Batch source timestamp resolution.
The value of this field determines how the source timestamp is associated with the samples in a batch.
A sample written with timestamp 't' inherits the source timestamp 't2' associated with the previous sample unless ('t' - 't2') > source_timestamp_resolution.
If source_timestamp_resolution is set to DDS::Duration_t::DURATION_INFINITE, every sample in the batch will share the source timestamp associated with the first sample.
If source_timestamp_resolution is set to zero, every sample in the batch will contain its own source timestamp corresponding to the moment when the sample was written.
The performance of the batching process is better when source_timestamp_resolution is set to DDS::Duration_t::DURATION_INFINITE.
[default] DDS::Duration_t::DURATION_INFINITE
[range] [0,DDS::Duration_t::DURATION_INFINITE]
System:: Boolean DDS::BatchQosPolicy::enable [get, set] |
Specifies whether or not batching is enabled.
[default] false
System:: Boolean DDS::BatchQosPolicy::thread_safe_write [get, set] |
Determines whether or not the write operation is thread safe.
If this parameter is set to true, multiple threads can call write on the DDS::DataWriter concurrently.
[default] true