ZBLOG

3.1.2.2.2. DisablePositiveACKsQosPolicy This additional QoS allows reducing network traffic when strict reliable communication is not required and bandwidth is limited. It consists in changing the default behavior by which positive acks are sent ...

3.1.2.2.2. DisablePositiveACKsQosPolicy

此额外的QoS(服务质量)策略允许在严格可靠通信不是必需且带宽有限的情况下减少网络流量。它通过改变默认行为来实现,默认行为是从读者发送正向确认(positive acks)到写者。而在启用此QoS时,当读者缺失某个样本时,只会发送负向确认(negative acks),但写者会在认为数据已被确认之前,保留数据一段可调时间。

QoS政策数据成员列表:

数据成员名称 类型 默认值
enabled bool false
duration Duration_t c_TimeInfinite
  • enabled: 指定QoS是否启用。如果为true,则表示禁用了正向确认,DataReader仅发送负向确认;否则,既发送正向也发送负向确认。

  • duration: 表示DataWriters在将数据视为已被确认之前保留该数据的时间。这一数值不适用于DataReaders。

注意:此QoS政策适用于DataWriter和DataReader实体。
启用的enabled数据成员不能在已启用的实体上进行修改。因此,该特性必须在初始化期间设置。只有duration数据成员可以在运行时修改。

警告:

为了保持DataWriters和DataReaders之间的兼容性,它们必须遵循兼容性规则。如果DataWriter未启用该QoS,则相应的DataReader不能启用该QoS。

兼容性规则:

为了维护DisablePositiveACKsQosPolicy在DataReaders和DataWriters之间的兼容性,如果DataWriter禁用了此QoS,则DataReader不能启用它。

DataWriter enabled 值 DataReader enabled 值 兼容性
true true
true false
false true
false false

示例

  1. // 此Qos对于DataWriter和DataReader实体有不同的API,因为它是通过ReliableWriterQos和ReliableReaderQos访问的。
  2. // 有关更多详细信息,请参见RTPSReliableWriterQos & RTPSReliableReaderQos部分。
  3. DataWriterQos writer_qos;
  4. DataReaderQos reader_qos;
  5. // DisablePositiveACKsQosPolicy默认为enabled = false
  6. // 将enabled更改为true
  7. writer_qos.reliable_writer_qos().disable_positive_acks.enabled = true;
  8. reader_qos.reliable_reader_qos().disable_positive_acks.enabled = true;
  9. // DisablePositiveACKsQosPolicy默认为无限持续时间
  10. // 将持续时间更改为1秒
  11. writer_qos.reliable_writer_qos().disable_positive_acks.duration = {1, 0};
  12. reader_qos.reliable_reader_qos().disable_positive_acks.duration = {1, 0};
  13. // 专门地,DataWriters还可以禁用心跳搭载
  14. writer_qos.reliable_writer_qos().disable_heartbeat_piggyback = true;
  15. // 在创建相应实体时使用修改后的QoS
  16. writer_ = publisher_->create_datawriter(topic_, writer_qos);
  17. reader_ = subscriber_->create_datareader(topic_, reader_qos);

以上内容概述了DisablePositiveACKsQoSPolicy,包括其作用、属性、兼容性要求以及如何在C++中实施该政策。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=22507

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?