# HistoryQoS
# 功能介绍
提供数据缓存服务。只要存在一对匹配的 DataWriter 和 DataReader,由 DataWriter 发布的数据就会被交付给 DataReader。发送方会根据 History 的 Kind 值和 Depth 的值在本地保留缓存数据,当用户同时使用 DurabilityQoS 持久化和 ReliabilityQoS 可靠化,DataWriter 可以在创建 DataReader 之前发布数据,在此之后的 DataReader 可以接收到之前的数据。
注意:临时数据的存活周期是根据 LifeSpanQoS 来确定。
# 兼容性
配合 DurabilityQoS 和 ReliabilityQoS 使用。
# 使用方法
HistoryQoS 成员变量。
类型 | 字段名 | 描述 |
---|---|---|
History- QoSPolicy- Kind | kind | KEEP_LAST_HISTORY_QOS:缓存最新的数据,具体个数配合 depth 的值确定。 KEEP_ALL_HISTORY_QOS:缓存所有的数据,无需 depth。 |
unsigned int | depth | 配合 KEEP_LAST_HISTORY_QOS 一起使用,决定缓存最新的数据的个数。 |
# DataWriter 端
1) QoS 赋值
对 History 的 kind 赋 KeppLast 或者 KeepAll,对 History 的 depth 赋缓存个数(虽然对 KeppAll 不生效),赋值给 QoS 后,将 QoS 作为参数传入 create_datawriter()。
# DataReader 端
1) QoS 赋值
对 History 的 kind 赋 KeppLast 或者 KeepAll,对 History 的 depth 赋缓存个数(虽然对 KeppAll 不生效),赋值给 QoS 后,将 QoS 作为参数传入 create_datareader()。如下图所示。
# 效果展示
1) 适用场景
您有一个偶尔发送数据的设备,如果希望 DataReader 接收有效的、旧的或新的数据,可以配合使用该 QoS,这将确保数据读取器在启用后立即获取一些以前的 DDS 示例。
2) 使用例子
我们在 dw 和 dr 上使用 DurabilityQoS 持久化和 ReliabilityQoS 可靠化,先启动 dw 发送数据,depth 设置为 5,dw 发送完五包数据后启动 dr,预想结果是 dr 收得到之前的五包历史数据,如下图所示。