ZBLOG

12.1.4. Endpoint Partitions Fast DDS uses this PropertyPolicyQos to define which partitions does an endpoint belong to. This property follows the same logic regarding matching as the PartitionQosPolicy that can be defined for Publishers and Subsc...

这段文字主要介绍了在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助手提供,问题来源于学员提问

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?