LIVELINESS策略是DDS(Data Distribution Service)中的一种QoS(Quality of Service)策略,用于控制参与者是否仍然活动和可达。该策略适用于主题(topic)、数据读取器(data reader)和数据写入器(data writer),通过它们各自的QoS结构中的liveliness成员来设置。在主题上设置此策略意味着它对该主题上的所有数据读取器和数据写入器都生效。
下面是与liveliness QoS策略相关的IDL定义:
enum LivelinessQosPolicyKind { AUTOMATIC_LIVELINESS_QOS, MANUAL_BY_PARTICIPANT_LIVELINESS_QOS, MANUAL_BY_TOPIC_LIVELINESS_QOS };
struct LivelinessQosPolicy { LivelinessQosPolicyKind kind; Duration_t lease_duration; };
其中,kind成员指示是由服务自动断定参与者的活跃性还是由指定实体手动断定。AUTOMATIC_LIVELINESS_QOS表示如果参与者在lease_duration期间没有发送任何网络流量,则服务将发送一个活跃性指示。MANUAL_BY_PARTICIPANT_LIVELINESS_QOS或MANUAL_BY_TOPIC_LIVELINESS_QOS设置意味着指定实体(“by topic”情况下为数据写入器, “by participant”情况下为域参与者)必须在规定的心跳间隔内写入样本或手动断言其活跃性。所需的心跳间隔由lease_duration成员指定。默认的租约期限是预定义的无限值,它禁用了任何活跃性测试。
要在不发布样本的情况下手动断定活跃性,应用程序必须在指定的心跳间隔内调用数据写入器(对于“by topic”设置)或域参与者(对于“by participant”设置)上的assert_liveliness()操作。
未在租约期限内收到来自数据写入器(通过写入样本或断言活跃性)的消息将导致LIVELINESS_CHANGED_STATUS通信状态发生变化,并通知应用程序(例如,通过调用数据读取器监听器的on_liveliness_changed()回调操作或向相关等待集发出信号)。
内容由零声教学AI助手提供,问题来源于学员提问