RTI Connext C++ API  Version 5.0.0
DDS_ReaderDataLifecycleQosPolicy Struct Reference

Controls how a DataReader manages the lifecycle of the data that it has received. More...

Public Attributes

struct DDS_Duration_t autopurge_nowriter_samples_delay
 Maximum duration for which the DDSDataReader will maintain information regarding an instance once its instance_state becomes DDS_NOT_ALIVE_NO_WRITERS_INSTANCE_STATE.
 
struct DDS_Duration_t autopurge_disposed_samples_delay
 Maximum duration for which the DDSDataReader will maintain samples for an instance once its instance_state becomes DDS_NOT_ALIVE_DISPOSED_INSTANCE_STATE.
 

Detailed Description

Controls how a DataReader manages the lifecycle of the data that it has received.

When a DataReader receives data, it is stored in a receive queue for the DataReader. The user application may either take the data from the queue or leave it there.

This QoS policy controls whether or not RTI Connext will automatically remove data from the receive queue (so that user applications cannot access it afterwards) when it detects that there are no more DataWriters alive for that data. It specifies how long a DDSDataReader must retain information regarding instances that have the instance_state DDS_NOT_ALIVE_NO_WRITERS_INSTANCE_STATE.

Note: This policy is not concerned with keeping reliable reader state or discovery information.

The DDSDataReader internally maintains the samples that have not been "taken" by the application, subject to the constraints imposed by other QoS policies such as DDS_HistoryQosPolicy and DDS_ResourceLimitsQosPolicy.

The DDSDataReader also maintains information regarding the identity, view_state and instance_state of data instances even after all samples have been taken. This is needed to properly compute the states when future samples arrive.

Under normal circumstances the DDSDataReader can only reclaim all resources for instances for which there are no writers and for which all samples have been 'taken'. The last sample the DDSDataReader will have taken for that instance will have an instance_state of either DDS_NOT_ALIVE_NO_WRITERS_INSTANCE_STATE or DDS_NOT_ALIVE_DISPOSED_INSTANCE_STATE depending on whether or not the last writer that had ownership of the instance disposed it.

In the absence of READER_DATA_LIFECYCLE, this behavior could cause problems if the application forgets to take those samples. "Untaken" samples will prevent the DDSDataReader from reclaiming the resources and they would remain in the DDSDataReader indefinitely.

For keyed Topics, the consideration of removing data samples from the receive queue is done on a per instance (key) basis. Thus when RTI Connext detects that there are no longer DataWriters alive for a certain key value of a Topic (an instance of the Topic), it can be configured to remove all data samples for that instance (key).

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

Member Data Documentation

struct DDS_Duration_t DDS_ReaderDataLifecycleQosPolicy::autopurge_nowriter_samples_delay

Maximum duration for which the DDSDataReader will maintain information regarding an instance once its instance_state becomes DDS_NOT_ALIVE_NO_WRITERS_INSTANCE_STATE.

After this time elapses, the DDSDataReader will purge all internal information regarding the instance, any "untaken" samples will also be lost.

[default] DDS_DURATION_INFINITE

[range] [1 nanosec, 1 year] or DDS_DURATION_INFINITE

struct DDS_Duration_t DDS_ReaderDataLifecycleQosPolicy::autopurge_disposed_samples_delay

Maximum duration for which the DDSDataReader will maintain samples for an instance once its instance_state becomes DDS_NOT_ALIVE_DISPOSED_INSTANCE_STATE.

After this time elapses, the DDSDataReader will purge all samples for the instance.

[default] DDS_DURATION_INFINITE

[range] [1 nanosec, 1 year] or DDS_DURATION_INFINITE


RTI Connext C++ API Version 5.0.0 Copyright © Thu Aug 30 2012 Real-Time Innovations, Inc