RTI Connext Micro C++ API Version 4.3.0
Loading...
Searching...
No Matches
DDS_DataReaderResourceLimitsQosPolicy Struct Reference

Resource limits that apply only to DDSDataReader instances. More...

#include <dds_c_infrastructure.h>

Public Attributes

DDS_Long max_remote_writers
 The maximum number of remote writers for which the reader will maintain state and communication.
 
DDS_Long max_remote_writers_per_instance
 The maximum number of remote writers for a unique instance for which the reader will maintain state and communication.
 
DDS_Long max_samples_per_remote_writer
 The maximum number of untaken samples from a given remote DDSDataWriter that a DDSDataReader may store.
 
DDS_Long max_outstanding_reads
 The maximum number of outstanding read or take calls, or one of their variants, on the same DDSDataReader for which the memory has not been returned by calling FooDataReader::return_loan.
 
DDS_DataReaderResourceLimitsInstanceReplacementKind instance_replacement
 The instance replacement policy when the DDS_ResourceLimitsQosPolicy::max_instances limit has been reached and a new instance is detected.
 
DDS_Long max_routes_per_writer
 The maximum number of routes the reader will send to per matched writer.
 
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 max_fragmented_samples_per_remote_writer
 The maximum number of samples per remote writer for which a DDSDataReader may store fragments.
 
DDS_Long shmem_ref_transfer_mode_attached_segment_allocation
 Number of shared memory segments a Zero Copy transfer over shared memory DDSDataReader can attach to at any given time.
 

Detailed Description

Resource limits that apply only to DDSDataReader instances.

This QoS policy is an extension to the DDS standard.

Entity:
DDSDataReader
Properties:
RxO = N/A
Changeable = NO

Member Data Documentation

◆ max_remote_writers

DDS_Long DDS_DataReaderResourceLimitsQosPolicy::max_remote_writers

The maximum number of remote writers for which the reader will maintain state and communication.

The DDS_DataReaderResourceLimitsQosPolicy::max_remote_writers resource-limit limits the maximum number of remote DDSDataWriter entities that the DDSDataReader can receive data from regardless of which instance it is.

Resources controlled by this limit can only be reused when a remote DDSDataWriter is either deleted or loses liveliness. [default] 1

[range] [1, 1000000], >= max_remote_writers_per_instance

◆ max_remote_writers_per_instance

DDS_Long DDS_DataReaderResourceLimitsQosPolicy::max_remote_writers_per_instance

The maximum number of remote writers for a unique instance for which the reader will maintain state and communication.

The DDS_DataReaderResourceLimitsQosPolicy::max_remote_writers_per_instance limits the maximum number of remote DDSDataWriter entities a DDSDataReader maintains state for per instance. If this resource-limit is lower than the actual number of remote DDSDataWriter entities updating an instance, only state for up to DDS_DataReaderResourceLimitsQosPolicy::max_remote_writers_per_instance is maintained. It is not guaranteed to be the last DDS_DataReaderResourceLimitsQosPolicy::max_remote_writers_per_instance though. However, the last remote DDSDataWriter to update an instance is always saved. When an instance is no longer updated by a DDSDataWriter known to the DDSDataReader, DDS_NOT_ALIVE_NO_WRITERS_INSTANCE_STATE state is signaled on the DDSDataReader. Thus, if this resource-limit is lower than the actual number of remote DDSDataWriter entities updating an instance, DDS_NOT_ALIVE_NO_WRITERS_INSTANCE_STATE may be signaled even though there may be one or more DDSDataWriter entities still updating an instance. In this case the instance will go back to the DDS_ALIVE_INSTANCE_STATE.

[default] 1

[range] [1, 2147483647], <= max_remote_writers

◆ max_samples_per_remote_writer

DDS_Long DDS_DataReaderResourceLimitsQosPolicy::max_samples_per_remote_writer

The maximum number of untaken samples from a given remote DDSDataWriter that a DDSDataReader may store.

This resource-limit limits the maximum number of samples that can be cached for each remote DDSDataWriter that the DDSDataReader is receiving data from. This resource-limit is useful in preventing one DDSDataWriter from starving another DDSDataWriter. NOTE: The samples cached from a DDSDataWriter are allocated from the same sample pool controlled by DDS_ResourceLimitsQosPolicy::max_samples.

[default] 1

[range] [1, 100000000], <= DDS_ResourceLimitsQosPolicy::max_samples

◆ max_outstanding_reads

DDS_Long DDS_DataReaderResourceLimitsQosPolicy::max_outstanding_reads

The maximum number of outstanding read or take calls, or one of their variants, on the same DDSDataReader for which the memory has not been returned by calling FooDataReader::return_loan.

The DDS_DataReaderResourceLimitsQosPolicy::max_outstanding_reads resource-limit limits the maximum number of simultaneous loans an application can make at any given time using the FooDataReader::read() and FooDataReader::take() APIs.

Typically a value of 1 is sufficient. It is only necessary to increase this value if an application thread will access the same cache before another thread has returned the loan.

[default] 1

[range] [1, 2147483647]

◆ instance_replacement

DDS_DataReaderResourceLimitsInstanceReplacementKind DDS_DataReaderResourceLimitsQosPolicy::instance_replacement

The instance replacement policy when the DDS_ResourceLimitsQosPolicy::max_instances limit has been reached and a new instance is detected.

[default] DDS_NO_INSTANCE_REPLACEMENT_QOS

◆ max_routes_per_writer

DDS_Long DDS_DataReaderResourceLimitsQosPolicy::max_routes_per_writer

The maximum number of routes the reader will send to per matched writer.

Each DDSDataReader maintains information about the state of its peer DDSDataWriter, those it has matched with. Part of this state is which locators, or destination addresses, it should use to send data to a particular DDSDataWriter. The DDS_DataReaderResourceLimitsQosPolicy::max_routes_per_writer resource-limit limits the maximum number of routes that can be saved per DDSDataWriter.

This resource-limit is shared across all matched DDSDataWriter entities per DDSDataReader. Thus, if DDS_DataReaderResourceLimitsQosPolicy::max_remote_writers is 2 and DDS_DataReaderResourceLimitsQosPolicy::max_routes_per_writer is 4, a total of 8 routes can be saved for both DDSDataWriter entities. One DDSDataWriter entity may have 6 routes and the other 2.

[default] 4

[range] [1, 2000]

◆ max_fragmented_samples

DDS_Long DDS_DataReaderResourceLimitsQosPolicy::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_ResourceLimitsQosPolicy::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 not drop fragments for any new samples until all fragments have been received.

◆ max_fragmented_samples_per_remote_writer

DDS_Long DDS_DataReaderResourceLimitsQosPolicy::max_fragmented_samples_per_remote_writer

The maximum number of samples per remote writer for which a DDSDataReader may store fragments.

Logical limit so a single remote writer cannot consume all available resources.

[default] 256

[range] [1, 1 million], <= max_fragmented_samples

◆ shmem_ref_transfer_mode_attached_segment_allocation

DDS_Long DDS_DataReaderResourceLimitsQosPolicy::shmem_ref_transfer_mode_attached_segment_allocation

Number of shared memory segments a Zero Copy transfer over shared memory DDSDataReader can attach to at any given time.

The max_count does not limit the total number of shared memory segments used by the DDSDataReader. When this limit is hit, the DDSDataReader will try to detach from a segment that doesn't contain any loaned samples and attach to a new segment. If samples are loaned from all attached segments, then the DDSDataReader will fail to attach to the new segment. This scenario will result in the sample being rejected.

[default] DDS_DataReaderResourceLimitsQosPolicy::max_remote_writers [range] [0, 1000000]