ZBLOG

15.6.1.4. Full example Given a system with the following topology: Allocation tuning example topology Participant P1 Participant P2 Participant P3 Topic 1 publisher Topic 1 subscriber Topic 2 subscriber Topic 1 subscriber Topic 2 publish...

15.6.1.4. 完整示例

给定一个具有以下拓扑的系统:

分配调整示例拓扑

  • 参与者 P1

  • 参与者 P2

  • 参与者 P3

  • Topic 1 发布者

  • Topic 1 订阅者

  • Topic 2 订阅者

  • Topic 1 订阅者

  • Topic 2 发布者

  • Topic 1 订阅者

  • Topic 2 订阅者

总共有 3 个 DomainParticipants。

每个 DomainParticipant 的最大 DataWriters 数为 1

每个 DomainParticipant 的最大 DataReaders 数为 2

Topic 1 的 DataWriter 与 3 个 DataReaders 匹配。

Topic 2 的 DataWriter 与 2 个 DataReaders 匹配。

所有的 DataReaders 都恰好与 1 个 DataWriter 匹配。

假设不使用内容过滤,并且将参数大小限制在以下范围内:

  • 最大 PartitionQosPolicy 大小:256
  • 最大 UserDataQosPolicy 大小:256
  • 最大 PropertyPolicyQos 大小:512

下面的代码片段显示了该示例中所需的一组参数。

C++

// DomainParticipant 配置
//////////////////////////////////
DomainParticipantQos participant_qos;

// 我们知道域中有3个参与者
participant_qos.allocation().participants =
        eprosima::fastdds::ResourceLimitedContainerConfig::fixed_size_configuration(3u);
// 我们知道每个参与者最多有2个读者
participant_qos.allocation().readers =
        eprosima::fastdds::ResourceLimitedContainerConfig::fixed_size_configuration(2u);
// 我们知道每个参与者最多有1个写入器
participant_qos.allocation().writers =
        eprosima::fastdds::ResourceLimitedContainerConfig::fixed_size_configuration(1u);

// 我们知道分区数据的最大大小 
participant_qos.allocation().data_limits.max_partitions = 256u;
// 我们知道用户数据的最大大小 
participant_qos.allocation().data_limits.max_user_data = 256u;
// 我们知道属性数据的最大大小 
participant_qos.allocation().data_limits.max_properties = 512u;

// 不使用内容过滤 
participant_qos.allocation().content_filter.expression_initial_size = 0u;
participant_qos.allocation().content_filter.expression_parameters =
        eprosima::fastdds::ResourceLimitedContainerConfig::fixed_size_configuration(0u);

// Topic 1 的 DataWriter 配置 
///////////////////////////////////////
DataWriterQos writer1_qos;

// 我们知道只有三个匹配的订阅者,没有内容过滤器 
writer1_qos.writer_resource_limits().matched_subscriber_allocation =
        eprosima::fastdds::ResourceLimitedContainerConfig::fixed_size_configuration(3u);
writer1_qos.writer_resource_limits().reader_filters_allocation =
        eprosima::fastdds::ResourceLimitedContainerConfig::fixed_size_configuration(0u);

// Topic 2 的 DataWriter 配置 
///////////////////////////////////////
DataWriterQos writer2_qos;

// 我们知道只有两个匹配的订阅者 
writer2_qos.writer_resource_limits().matched_subscriber_allocation =
        eprosima::fastdds::ResourceLimitedContainerConfig::fixed_size_configuration(2u);
writer2_qos.writer_resource_limits().reader_filters_allocation =
        eprosima::fastdds::ResourceLimitedContainerConfig::fixed_size_configuration(0u);


// 两个主题的数据读取器配置  
///////////////////////////////////////////
DataReaderQos reader_qos;

// 我们知道只会有一个匹配的发布者 
reader_qos.reader_resource_limits().matched_publisher_allocation =
        eprosima::fastdds::ResourceLimitedContainerConfig::fixed_size_configuration(1u);

XML

<?xml version="1.0" encoding="UTF-8" ?>
<profiles xmlns="http://www.eprosima.com">
    <participant profile_name="participant_alloc_qos_example">
        <rtps>
            <allocation>
                <!-- 我们知道域中有3个参与者 -->
                <total_participants>
                    <initial>3</initial>
                    <maximum>3</maximum>
                    <increment>0</increment>
                </total_participants>
                <!-- 我们知道每个参与者最多有2个读者 -->
                <total_readers>
                    <initial>2</initial>
                    <maximum>2</maximum>
                    <increment>0</increment>
                </total_readers>
                <!-- 我们知道每个参与者最多有1个写入器 -->
                <total_writers>
                    <initial>1</initial>
                    <maximum>1</maximum>
                    <increment>0</increment>
                </total_writers>
                <max_partitions>256</max_partitions>
                <max_user_data>256</max_user_data>
                <max_properties>512</max_properties>

                <!-- content_filter 无法通过 XML 配置(尚未支持) -->
            </allocation>
        </rtps>
    </participant>

    <data_writer profile_name="allocation_qos_example_pub_for_topic_1">
        <!--我们知道我们将有三个匹配的订阅者,没有内容过滤器 -->
        <matchedSubscribersAllocation>
            <initial>3</initial>
            <maximum>3</maximum>
            <increment>0</increment>
        </matchedSubscribersAllocation>

        <!-- reader_filters_allocation 无法通过 XML 配置(尚未支持) -->
    </data_writer>

    <data_writer profile_name="allocation_qos_example_pub_for_topic_2">
        <!--我们知道我们将有两个匹配的订阅者,没有内容过滤器 -->
        <matchedSubscribersAllocation>
            <initial>2</initial>
            <maximum>2</maximum>
            <increment>0</increment>
        </matchedSubscribersAllocation>

        <!-- reader_filters_allocation 无法通过 XML 配置(尚未支持) -->
    </data_writer>

    <data_reader profile_name="allocation_qos_example_sub">
         <!--我们知道只有一个匹配的发布者-->
         <matchedPublishersAllocation >
             <initial >1 </initial >
             <maximum >1 </maximum >
             <increment >0 </increment >
         </matchedPublishersAllocation >
     </data_reader >
</profiles >

这个示例展示了如何配置 DomainParticipantDataWriterDataReader,以满足特定系统拓扑中的资源需求。这些配置确保了系统能够有效地管理其资源并保持性能。


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?