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 实体。
// 创建一个 PublisherQos 对象
PublisherQos publisher_qos;
// GroupDataQosPolicy 默认为空集合构造
// 集合是私有成员,因此需要使用 getter 和 setter 来访问
// 在初始化时向集合添加数据
std::vector<eprosima::fastdds::rtps::octet> vec;
// 向组数据向量中添加两个新的 octets
eprosima::fastdds::rtps::octet val = 3;
vec.push_back(val);
val = 10;
vec.push_back(val);
// 使用 setter 函数设置集合的数据
publisher_qos.group_data().data_vec(vec);
// 使用修改后的 QoS 创建相应的实体
publisher_ = participant_->create_publisher(publisher_qos);
// 在运行时向集合添加数据
vec = publisher_qos.group_data().data_vec(); // 使用 getter 保留旧值
val = 31;
vec.push_back(val);
// 使用 setter 函数更新集合的数据
publisher_qos.group_data().data_vec(vec);
// 更新相应实体的 QoS 设置
publisher_->set_qos(publisher_qos);
总结
通过使用 GroupDataQosPolicy
,开发者能够灵活地为相关的 Publisher 和 Subscriber 附加共享数据,从而增强系统的可扩展性和灵活性。这种机制非常适合需要动态调整其行为或特性的场景,同时确保不同的数据流之间的一致性和协作。
内容由零声教学AI助手提供,问题来源于学员提问