3.1.2.1.1. DeadlineQosPolicy
DeadlineQosPolicy 是一种质量服务(QoS)策略,当新样本的发布频率低于某个阈值时,会触发警报。它特别适用于期望数据定期更新的场景。
功能描述
- 在发布端,截止日期定义了应用程序应在多长时间内提供新的样本。
- 在订阅端,截止日期定义了接收新样本的最大时间间隔。
对于具有键(key)的主题,此QoS按键应用。例如,如果某些车辆的位置需要定期发布,可以将车辆的ID作为数据类型的键,并将截止日期QoS设置为所需的发布周期。
QoS 策略的数据成员列表
数据成员名称 | 类型 | 默认值 |
---|---|---|
period | Duration_t | c_TimeInfinite |
注意事项
- 此QoS策略适用于主题(Topic)、数据读取器(DataReader)和数据写入器(DataWriter)实体。
- 它可以在启用的实体上进行更改。
警告
为了确保数据写入器和数据读取器之间的匹配,它们必须遵循兼容性规则。有关更多详细信息,请参见兼容性规则部分。
兼容性规则
为了保持 DataReaders 和 DataWriters 之间 DeadlineQosPolicy 的兼容性,所提供的截止日期周期(配置在 DataWriter 上)必须小于或等于请求的截止日期周期(配置在 DataReader 上)。否则,这些实体将被视为不兼容。
此外,DeadlineQosPolicy 必须与 TimeBasedFilterQosPolicy 一致,这意味着截止日期周期必须大于或等于最小分隔时间。
示例
以下是一个使用 C++ 的示例代码:
// 这个示例使用 DataWriter,但也可以应用于 DataReader 和 Topic 实体
DataWriterQos writer_qos;
// 截止日期 QoS 默认构造时周期为无限
// 将周期修改为 1 秒
writer_qos.deadline().period.seconds = 1;
writer_qos.deadline().period.nanosec = 0;
// 在创建相应实体时使用修改后的 QoS 设置
writer_ = publisher_->create_datawriter(topic_, writer_qos);
该示例展示了如何创建一个 DataWriter
并设置其 DeadlineQosPolicy
的周期为一秒。通过这种方式,系统将在超过一秒未接收到新样本时触发警报,从而确保数据流动符合预期频率。这种机制非常适合需要实时或准实时更新的数据场景,如传感器数据、车辆位置等。
内容由零声教学AI助手提供,问题来源于学员提问