RTI Connext .NET API (legacy)  Version 6.1.2
DDS::WriterDataLifecycleQosPolicy Struct Reference

Controls how a DDS::DataWriter handles the lifecycle of the instances (keys) that it is registered to manage. More...

#include <managed_infrastructure.h>

Static Public Member Functions

static System::String ^ get_writerdatalifecycle_qos_policy_name ()
 Stringified human-readable name for DDS::WriterDataLifecycleQosPolicy. More...
 

Public Attributes

Duration_t autopurge_unregistered_instances_delay
 <<extension>> Maximum duration for which the DDS::DataWriter will maintain information regarding an instance once it has unregistered the instance. More...
 
Duration_t autopurge_disposed_instances_delay
 <<extension>> Maximum duration for which the DDS::DataWriter will maintain information regarding an instance once it has disposed the instance. More...
 

Properties

System::Boolean autodispose_unregistered_instances [get, set]
 Boolean flag that controls the behavior when the DDS::DataWriter unregisters an instance by means of the unregister operations. More...
 

Detailed Description

Controls how a DDS::DataWriter handles the lifecycle of the instances (keys) that it is registered to manage.

Entity:
DDS::DataWriter
Properties:
RxO = N/A
Changeable = YES

Usage

This policy determines how the DDS::DataWriter acts with regards to the lifecycle of the data instances it manages (data instances that have been either explicitly registered with the DDS::DataWriter or implicitly registered by directly writing the data).

You may use DDS::TypedDataWriter::unregister_instance to indicate that the DDS::DataWriter no longer wants to send data for a DDS::Topic.

The behavior controlled by this QoS policy applies on a per instance (key) basis for keyed Topics, so that when a DDS::DataWriter unregisters an instance, RTI Connext can automatically also dispose that instance. This is the default behavior.

In many cases where the ownership of a Topic is shared (see DDS::OwnershipQosPolicy), DataWriters may want to relinquish their ownership of a particular instance of the Topic to allow other DataWriters to send updates for the value of that instance regardless of Ownership Strength. In that case, you may only want a DataWriter to unregister an instance without disposing the instance. Disposing an instance is a statement that an instance no longer exists. User applications may be coded to trigger on the disposal of instances, thus the ability to unregister without disposing may be useful to properly maintain the semantic of disposal.

Member Data Documentation

◆ autopurge_unregistered_instances_delay

Duration_t DDS::WriterDataLifecycleQosPolicy::autopurge_unregistered_instances_delay

<<extension>> Maximum duration for which the DDS::DataWriter will maintain information regarding an instance once it has unregistered the instance.

Determines how long the DDS::DataWriter will maintain information regarding an instance that has been unregistered. By default, the DDS::DataWriter resources associated with an instance (e.g., the space needed to remember the Instance Key or KeyHash) are released lazily. This means the resources are only reclaimed when the space is needed for another instance because DDS::ResourceLimitsQosPolicy::max_instances is exceeded. This behavior can be changed by setting autopurge_unregistered_instances_delay to a value other than DDS::Duration_t::DURATION_INFINITE.

After this time elapses, the DDS::DataWriter will purge all internal information regarding the instance, including historical samples, even if DDS::ResourceLimitsQosPolicy::max_instances has not been reached.

The purging of unregistered instances can be done based on the source timestamp of the unregister sample or the time where the unregister sample was added to the DataWriter queue by setting the following property to 1 or 0 respectively (default: 0): dds.data_writer.history.source_timestamp_based_autopurge_instances_delay.

For durable writer history, autopurge_unregistered_instances_delay supports only the DDS::Duration_t::DURATION_INFINITE value.

[default] DDS::Duration_t::DURATION_INFINITE (disabled) for all DDS::DataWriter except for the built-in discovery DataWriters DDS::Duration_t::DURATION_ZERO for built-in discovery DataWriters (see DDS::DiscoveryConfigQosPolicy::publication_writer_data_lifecycle and DDS::DiscoveryConfigQosPolicy::subscription_writer_data_lifecycle).

[range] [0, 1 year] or DDS::Duration_t::DURATION_INFINITE

◆ autopurge_disposed_instances_delay

Duration_t DDS::WriterDataLifecycleQosPolicy::autopurge_disposed_instances_delay

<<extension>> Maximum duration for which the DDS::DataWriter will maintain information regarding an instance once it has disposed the instance.

Determines how long the DDS::DataWriter will maintain information regarding an instance that has been disposed of. By default, disposing of an instance does not make it eligible to be purged. By setting autopurge_disposed_instances_delay to a value other than DDS::Duration_t::DURATION_INFINITE, the DataWriter will delete the resources associated with an instance (including historical samples) once the time has elapsed and all matching DataReaders have acknowledged all the samples for this instance including the dispose sample.

The purging of disposed instances can be done based on the source timestamp of the dispose sample or the time when the dispose sample was added to the DataWriter queue by setting the following property to 1 or 0 respectively (default: 0): dds.data_writer.history.source_timestamp_based_autopurge_instances_delay.

This QoS value is supported with durable DataWriter queues only for DDS::Duration_t::DURATION_ZERO and DDS::Duration_t::DURATION_INFINITE values (finite values are not supported).

[default] DDS::Duration_t::DURATION_INFINITE (disabled)

[range] [0, 1 year] or DDS::Duration_t::DURATION_INFINITE

Property Documentation

◆ autodispose_unregistered_instances

System::Boolean DDS::WriterDataLifecycleQosPolicy::autodispose_unregistered_instances
getset

Boolean flag that controls the behavior when the DDS::DataWriter unregisters an instance by means of the unregister operations.

  • true
    The DDS::DataWriter will dispose of the instance each time it is unregistered. The behavior is identical to explicitly calling one of the dispose operations on the instance prior to calling the unregister operation.
  • false (default)
    The DDS::DataWriter will not dispose of the instance. The application can still call one of the dispose operations prior to unregistering the instance and dispose of the instance that way.

[default] false