RTI Connext C API  Version 7.0.0
DDS_DataWriterResourceLimitsQosPolicy Struct Reference

Various settings that configure how a DDS_DataWriter allocates and uses physical memory for internal resources. More...

Data Fields

DDS_Long initial_concurrent_blocking_threads
 The initial number of threads that are allowed to concurrently block on write call on the same DDS_DataWriter. More...
 
DDS_Long max_concurrent_blocking_threads
 The maximum number of threads that are allowed to concurrently block on write call on the same DDS_DataWriter. More...
 
DDS_Long max_remote_reader_filters
 The maximum number of remote DataReaders for which the DDS_DataWriter will perform content-based filtering. More...
 
DDS_Long initial_batches
 Represents the initial number of batches a DDS_DataWriter will manage. More...
 
DDS_Long max_batches
 Represents the maximum number of batches a DDS_DataWriter will manage. More...
 
DDS_DataWriterResourceLimitsInstanceReplacementKind instance_replacement
 Sets the kinds of instances allowed to be replaced when instance resource limits are reached. More...
 
DDS_Boolean replace_empty_instances
 Whether or not to replace empty instances during instance replacement. More...
 
DDS_Boolean autoregister_instances
 Whether or not to automatically register new instances. More...
 
DDS_Long initial_virtual_writers
 The initial number of virtual writers supported by a DDS_DataWriter. More...
 
DDS_Long max_virtual_writers
 The maximum number of virtual writers supported by a DDS_DataWriter. More...
 
DDS_Long max_remote_readers
 The maximum number of remote readers supported by a DDS_DataWriter. More...
 
DDS_Long max_app_ack_remote_readers
 The maximum number of application-level acknowledging remote readers supported by a DDS_DataWriter. More...
 
DDS_Long initial_active_topic_queries
 Represents the initial number of active topic queries a DDS_DataWriter will manage. More...
 
DDS_Long max_active_topic_queries
 Represents the maximum number of active topic queries a DDS_DataWriter will manage. More...
 
struct DDS_AllocationSettings_t writer_loaned_sample_allocation
 Represents the allocation settings of loaned samples managed by a DDS_DataWriter. More...
 
DDS_Boolean initialize_writer_loaned_sample
 Whether or not to initialize loaned samples returned by a DDS_DataWriter. More...
 

Detailed Description

Various settings that configure how a DDS_DataWriter allocates and uses physical memory for internal resources.

DataWriters must allocate internal structures to handle the simultaneously blocking of threads trying to call FooDataWriter_write on the same DDS_DataWriter, for the storage used to batch small samples, and for content-based filters specified by DataReaders.

Most of these internal structures start at an initial size and, by default, will be grown as needed by dynamically allocating additional memory. You may set fixed, maximum sizes for these internal structures if you want to bound the amount of memory that can be used by a DDS_DataWriter. By setting the initial size to the maximum size, you will prevent RTI Connext from dynamically allocating any memory after the creation of the DDS_DataWriter.

This QoS policy is an extension to the DDS standard.

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

Field Documentation

◆ initial_concurrent_blocking_threads

DDS_Long DDS_DataWriterResourceLimitsQosPolicy::initial_concurrent_blocking_threads

The initial number of threads that are allowed to concurrently block on write call on the same DDS_DataWriter.

This value only applies if DDS_HistoryQosPolicy has its kind set to DDS_KEEP_ALL_HISTORY_QOS and DDS_ReliabilityQosPolicy::max_blocking_time is > 0.

[default] 1

[range] [1, 10000], <= max_concurrent_blocking_threads

◆ max_concurrent_blocking_threads

DDS_Long DDS_DataWriterResourceLimitsQosPolicy::max_concurrent_blocking_threads

The maximum number of threads that are allowed to concurrently block on write call on the same DDS_DataWriter.

This value only applies if DDS_HistoryQosPolicy has its kind set to DDS_KEEP_ALL_HISTORY_QOS and DDS_ReliabilityQosPolicy::max_blocking_time is > 0.

[default] DDS_LENGTH_UNLIMITED

[range] [1, 10000] or DDS_LENGTH_UNLIMITED, >= initial_concurrent_blocking_threads

◆ max_remote_reader_filters

DDS_Long DDS_DataWriterResourceLimitsQosPolicy::max_remote_reader_filters

The maximum number of remote DataReaders for which the DDS_DataWriter will perform content-based filtering.

[default] DDS_LENGTH_UNLIMITED

[range] [0, (2^31)-2] or DDS_LENGTH_UNLIMITED.

0: The DDS_DataWriter will not perform filtering for any DDS_DataReader.

1 to (2^31)-2: The DataWriter will filter for up to the specified number of DataReaders. In addition, the Datawriter will store the result of the filtering per sample per DataReader.

DDS_LENGTH_UNLIMITED: The DataWriter will filter for up to (2^31)-2 DataReaders. However, in this case, the DataWriter will not store the filtering result per sample per DataReader. Thus, if a sample is resent (such as due to a loss of reliable communication), the sample will be filtered again.

◆ initial_batches

DDS_Long DDS_DataWriterResourceLimitsQosPolicy::initial_batches

Represents the initial number of batches a DDS_DataWriter will manage.

[default] 8

[range] [1,100 million]

See also
DDS_BatchQosPolicy

◆ max_batches

DDS_Long DDS_DataWriterResourceLimitsQosPolicy::max_batches

Represents the maximum number of batches a DDS_DataWriter will manage.

[default] DDS_LENGTH_UNLIMITED

When batching is enabled, the maximum number of samples that a DDS_DataWriter can store is limited by this value and DDS_ResourceLimitsQosPolicy::max_samples.

[range] [1,100 million] or DDS_LENGTH_UNLIMITED >= DDS_RtpsReliableWriterProtocol_t::heartbeats_per_max_samples if batching is enabled

See also
DDS_BatchQosPolicy

◆ instance_replacement

DDS_DataWriterResourceLimitsInstanceReplacementKind DDS_DataWriterResourceLimitsQosPolicy::instance_replacement

Sets the kinds of instances allowed to be replaced when instance resource limits are reached.

When a DDS_DataWriter's number of active instances is greater than DDS_ResourceLimitsQosPolicy::max_instances, it will try to make room by replacing an existing instance. This field specifies the kinds of instances allowed to be replaced.

If a replaceable instance is not available, either an out-of-resources exception will be returned, or the writer may block if the instance reclamation was done when writing.

[default] DDS_UNREGISTERED_INSTANCE_REPLACEMENT

See also
DDS_DataWriterResourceLimitsInstanceReplacementKind

◆ replace_empty_instances

DDS_Boolean DDS_DataWriterResourceLimitsQosPolicy::replace_empty_instances

Whether or not to replace empty instances during instance replacement.

When a DDS_DataWriter has more active instances than allowed by DDS_ResourceLimitsQosPolicy::max_instances, it tries to make room by replacing an existing instance. This field configures whether empty instances (i.e. instances with no samples) may be replaced. If set DDS_BOOLEAN_TRUE, then a DDS_DataWriter will first try reclaiming empty instances, before trying to replace whatever is specified by DDS_DataWriterResourceLimitsQosPolicy::instance_replacement.

[default] DDS_BOOLEAN_FALSE

See also
DDS_DataWriterResourceLimitsInstanceReplacementKind

◆ autoregister_instances

DDS_Boolean DDS_DataWriterResourceLimitsQosPolicy::autoregister_instances

Whether or not to automatically register new instances.

[default] DDS_BOOLEAN_FALSE

When set to true, it is possible to write with a non-NIL handle of an instance that is not registered: the write operation will succeed and the instance will be registered. Otherwise, that write operation would fail.

See also
FooDataWriter_write

◆ initial_virtual_writers

DDS_Long DDS_DataWriterResourceLimitsQosPolicy::initial_virtual_writers

The initial number of virtual writers supported by a DDS_DataWriter.

[default] 1

[range] [1, 1000000], or DDS_LENGTH_UNLIMITED

◆ max_virtual_writers

DDS_Long DDS_DataWriterResourceLimitsQosPolicy::max_virtual_writers

The maximum number of virtual writers supported by a DDS_DataWriter.

Sets the maximum number of unique virtual writers supported by a DDS_DataWriter, where virtual writers are added when samples are written with the virtual writer GUID.

This field is specially relevant in the configuration of Persistence Service DataWriters since these DataWriters will publish samples on behalf of multiple virtual writers.

[default] DDS_LENGTH_UNLIMITED

[range] [1, 1000000], or DDS_LENGTH_UNLIMITED

◆ max_remote_readers

DDS_Long DDS_DataWriterResourceLimitsQosPolicy::max_remote_readers

The maximum number of remote readers supported by a DDS_DataWriter.

[default] DDS_LENGTH_UNLIMITED

[range] [1, 1000000], or DDS_LENGTH_UNLIMITED

◆ max_app_ack_remote_readers

DDS_Long DDS_DataWriterResourceLimitsQosPolicy::max_app_ack_remote_readers

The maximum number of application-level acknowledging remote readers supported by a DDS_DataWriter.

[default] DDS_LENGTH_UNLIMITED

[range] [1, 1000000], or DDS_LENGTH_UNLIMITED

◆ initial_active_topic_queries

DDS_Long DDS_DataWriterResourceLimitsQosPolicy::initial_active_topic_queries

Represents the initial number of active topic queries a DDS_DataWriter will manage.

[default] 1

[range] [1, 1000000]

See also
DDS_TopicQueryDispatchQosPolicy

◆ max_active_topic_queries

DDS_Long DDS_DataWriterResourceLimitsQosPolicy::max_active_topic_queries

Represents the maximum number of active topic queries a DDS_DataWriter will manage.

When topic queries are enabled, the maximum number of topic queries that a DDS_DataWriter can publish data samples for at the same time is limited by this value.

When the DataWriter receives one topic query above this limit, it will wait to process it until it finishes publishing all the samples for at least one of the current topic queries.

[default] DDS_LENGTH_UNLIMITED

[range] [1, 1000000] or DDS_LENGTH_UNLIMITED

See also
DDS_TopicQueryDispatchQosPolicy

◆ writer_loaned_sample_allocation

struct DDS_AllocationSettings_t DDS_DataWriterResourceLimitsQosPolicy::writer_loaned_sample_allocation

Represents the allocation settings of loaned samples managed by a DDS_DataWriter.

The number of samples loaned by a DDS_DataWriter via FooDataWriter_get_loan is limited by the DDS_AllocationSettings_t::max_count of DDS_DataWriterResourceLimitsQosPolicy::writer_loaned_sample_allocation. FooDataWriter_get_loan returns NULL if and only if DDS_AllocationSettings_t::max_count samples have been loaned, and none of those samples has been written with FooDataWriter_write or discarded via FooDataWriter_discard_loan.

[default] initial_count = DDS_AUTO_COUNT (DDS_ResourceLimitsQosPolicy::initial_samples + 1); max_count = DDS_AUTO_COUNT (DDS_ResourceLimitsQosPolicy::max_samples + 1); incremental_count = DDS_AUTO_COUNT (0 if initial_count = max_count; initial_count otherwise);

[range] See allowed ranges in struct DDS_AllocationSettings_t

See also
FooDataWriter_get_loan
FooDataWriter_discard_loan

◆ initialize_writer_loaned_sample

DDS_Boolean DDS_DataWriterResourceLimitsQosPolicy::initialize_writer_loaned_sample

Whether or not to initialize loaned samples returned by a DDS_DataWriter.

[default] DDS_BOOLEAN_FALSE

See also
FooDataWriter_get_loan