这段文字主要介绍了在Fast DDS中,如何使用 PropertyPolicyQos
来定义一个端点(如数据读者或数据写者)所属于的分区(Partition)。以下是对内容的逐步解释:
1. 分区概述
- Fast DDS利用
PropertyPolicyQos
来定义一个端点所属的分区。 - 分区名称以分号(;)分隔的列表形式提供。
2. 分区匹配逻辑
PropertyPolicyQos
的逻辑与为发布者(Publisher)和订阅者(Subscriber)定义的PartitionQosPolicy
相同。- 当一个端点被创建时,可以通过该属性将其指定到一个或多个特定分区。
3. 冲突处理
- 重要提示:如果发布者与其数据写入器之间存在冲突配置,例如:
- 数据写入器 (
DataWriter
) 定义了分区,而发布者设置了PartitionQosPolicy
。 - 在这种情况下,数据写入器的配置将优先,并且发布者的
PartitionQosPolicy
将被忽略。这一原则同样适用于订阅者及其数据读取器 (DataReader
)。
- 数据写入器 (
4. 创建实体时设置
- 当通过
create_with_profile
函数创建数据读取器和数据写入器时,此属性会自动设置。 - 一旦实体被创建,这个属性不可再更改。
5. 属性名和值
- 属性名称:
"partitions"
- 属性值: 一个以分号分隔的分区名称列表,例如
"part1;part2"
。 - 默认值: 空字符串 (
""
),表示没有指定任何分区。
6. C++代码示例
给出了一些C++代码示例,演示如何为数据写入器和数据读取器添加分区:
// 创建 DataWriter 的 QoS 配置并添加分区
DataWriterQos wqos;
wqos.properties().properties().emplace_back("partitions", "part1;part2");
// 创建 DataReader 的 QoS 配置并添加分区
DataReaderQos rqos;
rqos.properties().properties().emplace_back("partitions", "part1;part2");
7. XML配置示例
还给出了相应的XML配置示例,用于在XML文件中定义数据读写器的分区:
<data_writer profile_name="pub_partition_example">
<qos>
<partition>
<names>
<name>part1</name>
<name>part2</name>
</names>
</partition>
</qos>
</data_writer>
<data_reader profile_name="sub_partition_example">
<qos>
<partition>
<names>
<name>part1</name>
<name>part2</name>
</names>
</partition>
</qos>
</data_reader>
总结
本段内容强调了在Fast DDS中,如何通过配置使得各个端点能够划归于特定的逻辑组,即“分区”。同时也解释了在面对冲突配置时,各种规则与优先级。理解这些概念对于构建高效的数据传输系统是至关重要的。
内容由零声教学AI助手提供,问题来源于学员提问