RTI Connext C++ API
Version 5.0.0
|
Built-in topic reader's resource limits. More...
Public Attributes | |
DDS_Long | initial_samples |
Initial number of samples. | |
DDS_Long | max_samples |
Maximum number of samples. | |
DDS_Long | initial_infos |
Initial number of sample infos. | |
DDS_Long | max_infos |
Maximum number of sample infos. | |
DDS_Long | initial_outstanding_reads |
The initial number of outstanding reads that have not call finish yet on the same built-in topic DDSDataReader. | |
DDS_Long | max_outstanding_reads |
The maximum number of outstanding reads that have not called finish yet on the same built-in topic DDSDataReader. | |
DDS_Long | max_samples_per_read |
Maximum number of samples that can be read/taken on a same built-in topic DDSDataReader. | |
DDS_Boolean | disable_fragmentation_support |
Determines whether the built-in topic DDSDataReader can receive fragmented samples. | |
DDS_Long | max_fragmented_samples |
The maximum number of samples for which the built-in topic DDSDataReader may store fragments at a given point in time. | |
DDS_Long | initial_fragmented_samples |
The initial number of samples for which a built-in topic DDSDataReader may store fragments. | |
DDS_Long | max_fragmented_samples_per_remote_writer |
The maximum number of samples per remote writer for which a built-in topic DDSDataReader may store fragments. | |
DDS_Long | max_fragments_per_sample |
Maximum number of fragments for a single sample. | |
DDS_Boolean | dynamically_allocate_fragmented_samples |
Determines whether the built-in topic DDSDataReader pre-allocates storage for storing fragmented samples. | |
Built-in topic reader's resource limits.
Defines the resources that can be used for a built-in-topic data reader.
A built-in topic data reader subscribes reliably to built-in topics containing declarations of new entities or updates to existing entities in the domain. Keys are used to differentiate among entities of the same type. RTI Connext assigns a unique key to each entity in a domain.
DDS_Long DDS_BuiltinTopicReaderResourceLimits_t::initial_samples |
Initial number of samples.
This should be a value between 1 and initial number of instance of the built-in-topic reader, depending on how many instances are sending data concurrently.
[default] 64
[range] [1, 1 million], <= max_samples
DDS_Long DDS_BuiltinTopicReaderResourceLimits_t::max_samples |
Maximum number of samples.
This should be a value between 1 and max number of instance of the built-in-topic reader, depending on how many instances are sending data concurrently. Also, it should not be less than initial_samples.
[default] DDS_LENGTH_UNLIMITED
[range] [1, 1 million] or DDS_LENGTH_UNLIMITED, >= initial_samples
DDS_Long DDS_BuiltinTopicReaderResourceLimits_t::initial_infos |
Initial number of sample infos.
The initial number of info units that a built-in topic DDSDataReader can have. Info units are used to store DDS_SampleInfo.
[default] 64
[range] [1, 1 million] <= max_infos
DDS_Long DDS_BuiltinTopicReaderResourceLimits_t::max_infos |
Maximum number of sample infos.
The maximum number of info units that a built-in topic DDSDataReader can use to store DDS_SampleInfo.
[default] DDS_LENGTH_UNLIMITED
[range] [1, 1 million] or DDS_LENGTH_UNLIMITED, >= initial_infos
DDS_Long DDS_BuiltinTopicReaderResourceLimits_t::initial_outstanding_reads |
The initial number of outstanding reads that have not call finish yet on the same built-in topic DDSDataReader.
[default] 2
[range] [1, 65536] or DDS_LENGTH_UNLIMITED <= max_outstanding_reads
DDS_Long DDS_BuiltinTopicReaderResourceLimits_t::max_outstanding_reads |
The maximum number of outstanding reads that have not called finish yet on the same built-in topic DDSDataReader.
[default] DDS_LENGTH_UNLIMITED
[range] [1, 65536] or DDS_LENGTH_UNLIMITED, >= initial_outstanding_reads
DDS_Long DDS_BuiltinTopicReaderResourceLimits_t::max_samples_per_read |
Maximum number of samples that can be read/taken on a same built-in topic DDSDataReader.
[default] 1024
[range] [1, 65536]
DDS_Boolean DDS_BuiltinTopicReaderResourceLimits_t::disable_fragmentation_support |
Determines whether the built-in topic DDSDataReader can receive fragmented samples.
When fragmentation support is not needed, disabling fragmentation support will save some memory resources.
[default] DDS_BOOLEAN_FALSE
DDS_Long DDS_BuiltinTopicReaderResourceLimits_t::max_fragmented_samples |
The maximum number of samples for which the built-in topic DDSDataReader may store fragments at a given point in time.
At any given time, a built-in topic DDSDataReader may store fragments for up to max_fragmented_samples
samples while waiting for the remaining fragments. These samples need not have consecutive sequence numbers and may have been sent by different built-in topic DDSDataWriter instances.
Once all fragments of a sample have been received, the sample is treated as a regular sample and becomes subject to standard QoS settings such as DDS_BuiltinTopicReaderResourceLimits_t::max_samples.
The middleware will drop fragments if the max_fragmented_samples
limit has been reached. For best-effort communication, the middleware will accept a fragment for a new sample, but drop the oldest fragmented sample from the same remote writer. For reliable communication, the middleware will drop fragments for any new samples until all fragments for at least one older sample from that writer have been received.
Only applies if DDS_BuiltinTopicReaderResourceLimits_t::disable_fragmentation_support is DDS_BOOLEAN_FALSE.
[default] 1024
[range] [1, 1 million]
DDS_Long DDS_BuiltinTopicReaderResourceLimits_t::initial_fragmented_samples |
The initial number of samples for which a built-in topic DDSDataReader may store fragments.
Only applies if DDS_BuiltinTopicReaderResourceLimits_t::disable_fragmentation_support is DDS_BOOLEAN_FALSE.
[default] 4
[range] [1,1024], <= max_fragmented_samples
DDS_Long DDS_BuiltinTopicReaderResourceLimits_t::max_fragmented_samples_per_remote_writer |
The maximum number of samples per remote writer for which a built-in topic DDSDataReader may store fragments.
Logical limit so a single remote writer cannot consume all available resources.
Only applies if DDS_BuiltinTopicReaderResourceLimits_t::disable_fragmentation_support is DDS_BOOLEAN_FALSE.
[default] 256
[range] [1, 1 million], <= max_fragmented_samples
DDS_Long DDS_BuiltinTopicReaderResourceLimits_t::max_fragments_per_sample |
Maximum number of fragments for a single sample.
Only applies if DDS_BuiltinTopicReaderResourceLimits_t::disable_fragmentation_support is DDS_BOOLEAN_FALSE.
[default] 512
[range] [1, 1 million] or DDS_LENGTH_UNLIMITED
DDS_Boolean DDS_BuiltinTopicReaderResourceLimits_t::dynamically_allocate_fragmented_samples |
Determines whether the built-in topic DDSDataReader pre-allocates storage for storing fragmented samples.
By default, the middleware will allocate memory upfront for storing fragments for up to DDS_BuiltinTopicReaderResourceLimits_t::initial_fragmented_samples samples. This memory may grow up to DDS_BuiltinTopicReaderResourceLimits_t::max_fragmented_samples if needed.
If dynamically_allocate_fragmented_samples
is set to DDS_BOOLEAN_TRUE, the middleware does not allocate memory upfront, but instead allocates memory from the heap upon receiving the first fragment of a new sample. The amount of memory allocated equals the amount of memory needed to store all fragments in the sample. Once all fragments of a sample have been received, the sample is deserialized and stored in the regular receive queue. At that time, the dynamically allocated memory is freed again.
This QoS setting may be useful for large, but variable-sized data types where upfront memory allocation for multiple samples based on the maximum possible sample size may be expensive. The main disadvantage of not pre-allocating memory is that one can no longer guarantee the middleware will have sufficient resources at run-time.
Only applies if DDS_BuiltinTopicReaderResourceLimits_t::disable_fragmentation_support is DDS_BOOLEAN_FALSE.
[default] DDS_BOOLEAN_TRUE