RTI Connext C API
Version 5.2.0
|
Specifies and configures the mechanism that allows DDS_DataReader entities to detect when DDS_DataWriter entities become disconnected or "dead.". More...
Data Fields | |
DDS_LivelinessQosPolicyKind | kind |
The kind of liveliness desired. | |
struct DDS_Duration_t | lease_duration |
The duration within which a DDS_Entity must be asserted, or else it is assumed to be not alive. | |
DDS_Long | assertions_per_lease_duration |
The number of assertions a DDS_DataWriter will send during a DDS_LivelinessQosPolicy::lease_duration. | |
Specifies and configures the mechanism that allows DDS_DataReader entities to detect when DDS_DataWriter entities become disconnected or "dead.".
Liveliness must be asserted at least once every DDS_LivelinessQosPolicy::lease_duration
otherwise RTI Connext will assume the corresponding DDS_Entity or is no longer alive.
The liveliness status of a DDS_Entity is used to maintain instance ownership in combination with the setting of the OWNERSHIP policy. The application is also informed via DDS_Listener when an DDS_Entity is no longer alive.
A DDS_DataReader requests that liveliness of writers is maintained by the requested means and loss of liveliness is detected with delay not to exceed the DDS_LivelinessQosPolicy::lease_duration
.
A DDS_DataWriter commits to signalling its liveliness using the stated means at intervals not to exceed the DDS_LivelinessQosPolicy::lease_duration
. The rate at which the DDS_DataWriter will signal its liveliness is defined by DDS_LivelinessQosPolicy::assertions_per_lease_duration.
Listeners are used to notify a DDS_DataReader of loss of liveliness and DDS_DataWriter of violations to the liveliness contract. The on_liveliness_lost() callback is only called once, after the first time the DDS_LivelinessQosPolicy::lease_duration
is exceeded (when the DDS_DataWriter first loses liveliness).
This QoS policy can be used during system integration to ensure that applications have been coded to meet design specifications. It can also be used during run time to detect when systems are performing outside of design specifications. Receiving applications can take appropriate actions in response to disconnected DataWriters.
This policy controls the mechanism and parameters used by RTI Connext to ensure that particular entities on the network are still alive. The liveliness can also affect the ownership of a particular instance, as determined by the OWNERSHIP policy.
This policy has several settings to support both data types that are updated periodically as well as those that are changed sporadically. It also allows customisation for different application requirements in terms of the kinds of failures that will be detected by the liveliness mechanism.
The DDS_AUTOMATIC_LIVELINESS_QOS liveliness setting is most appropriate for applications that only need to detect failures at the process-level, but not application-logic failures within a process. RTI Connext takes responsibility for renewing the leases at the required rates and thus, as long as the local process where a DDS_DomainParticipant is running and the link connecting it to remote participants remains connected, the entities within the DDS_DomainParticipant will be considered alive. This requires the lowest overhead.
The manual settings (DDS_MANUAL_BY_PARTICIPANT_LIVELINESS_QOS, DDS_MANUAL_BY_TOPIC_LIVELINESS_QOS) require the application on the publishing side to periodically assert the liveliness before the lease expires to indicate the corresponding DDS_Entity is still alive. The action can be explicit by calling the DDS_DataWriter_assert_liveliness operation or implicit by writing some data.
The two possible manual settings control the granularity at which the application must assert liveliness.
Changes in LIVELINESS must be detected by the Service with a time-granularity greater or equal to the DDS_LivelinessQosPolicy::lease_duration
. This ensures that the value of the DDS_LivelinessChangedStatus is updated at least once during each DDS_LivelinessQosPolicy::lease_duration
and the related Listeners and DDS_WaitSet s are notified within a DDS_LivelinessQosPolicy::lease_duration
from the time the LIVELINESS changed.
The value offered is considered compatible with the value requested if and only if the following conditions are met:
lease_duration
<= requested lease_duration
evaluates to DDS_BOOLEAN_TRUE. DDS_LivelinessQosPolicyKind DDS_LivelinessQosPolicy::kind |
The kind of liveliness desired.
[default] DDS_AUTOMATIC_LIVELINESS_QOS
struct DDS_Duration_t DDS_LivelinessQosPolicy::lease_duration |
The duration within which a DDS_Entity must be asserted, or else it is assumed to be not alive.
[default] DDS_DURATION_INFINITE
[range] [0,1 year] or DDS_DURATION_INFINITE
DDS_Long DDS_LivelinessQosPolicy::assertions_per_lease_duration |
The number of assertions a DDS_DataWriter will send during a DDS_LivelinessQosPolicy::lease_duration.
This field only applies to a DDS_DataWriter and is not considered during QoS compatibility checks.
The default value is 3. A higher value will make the liveliness mechanism more robust against packet losses, but it will also increase the network traffic.
[default] 3
[range] [2, 100 million]