ZBLOG

3.1.2.1.6. GroupDataQosPolicy Allows the application to attach additional information to created Publishers or Subscribers. This data is common to all DataWriters/DataReaders belonging to the Publisher/Subscriber and it is propagated by means of ...

3.1.2.1.6. GroupDataQosPolicy

概述
GroupDataQosPolicy 允许应用程序将附加信息附加到创建的 Publishers 或 Subscribers。这些数据对于属于同一 Publisher/Subcriber 的所有 DataWriters/DataReaders 是通用的,并且通过内置主题进行传播。

该 QoS 策略可以与 DataWriter 和 DataReader 监听器结合使用,以实现类似于 PartitionQosPolicy 的匹配策略。

QoS 策略数据成员列表:

数据成员名称 类型 默认值
collection std::vector 空向量

注意
此 QoS 策略适用于 Publisher 和 Subscriber 实体。它可以在启用的实体上更改。

示例

以下示例展示了如何在 C++ 中使用 GroupDataQosPolicy。尽管示例使用的是 Publisher,但也可以应用于 Subscriber 实体。

  1. // 创建一个 PublisherQos 对象
  2. PublisherQos publisher_qos;
  3. // GroupDataQosPolicy 默认为空集合构造
  4. // 集合是私有成员,因此需要使用 getter 和 setter 来访问
  5. // 在初始化时向集合添加数据
  6. std::vector<eprosima::fastdds::rtps::octet> vec;
  7. // 向组数据向量中添加两个新的 octets
  8. eprosima::fastdds::rtps::octet val = 3;
  9. vec.push_back(val);
  10. val = 10;
  11. vec.push_back(val);
  12. // 使用 setter 函数设置集合的数据
  13. publisher_qos.group_data().data_vec(vec);
  14. // 使用修改后的 QoS 创建相应的实体
  15. publisher_ = participant_->create_publisher(publisher_qos);
  16. // 在运行时向集合添加数据
  17. vec = publisher_qos.group_data().data_vec(); // 使用 getter 保留旧值
  18. val = 31;
  19. vec.push_back(val);
  20. // 使用 setter 函数更新集合的数据
  21. publisher_qos.group_data().data_vec(vec);
  22. // 更新相应实体的 QoS 设置
  23. publisher_->set_qos(publisher_qos);

总结

通过使用 GroupDataQosPolicy,开发者能够灵活地为相关的 Publisher 和 Subscriber 附加共享数据,从而增强系统的可扩展性和灵活性。这种机制非常适合需要动态调整其行为或特性的场景,同时确保不同的数据流之间的一致性和协作。


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?