这段文本主要讲述了如何在Fast DDS(Data Distribution Service)中自动启用统计数据写入器(DataWriters)的相关设置和优先级。以下是对主要内容的详细解释:
自动启用统计数据写入器
DomainParticipantQos 属性:
- 使用
DomainParticipantQos
的properties()
方法中的fastdds.statistics
属性,可以直接启用统计 DataWriters。 - 该属性的值为一个以分号分隔的列表,包含用户希望启用的统计主题名称别名。
- 使用
配置方式:
- 用户可以通过编程方式或加载 XML 文件来设置该属性。
- 如果两种方式都进行了设置,则优先级根据使用的 API 和提供的 QoS 配置而定:
- XML 设置优先:如果调用
create_participant_with_profile()
并提供有效的参与者配置文件。 - 在调用
create_participant()
时,如果使用PARTICIPANT_QOS_DEFAULT
并且 XML 文件中存在带有is_default_profile
选项设为 true 的参与者配置文件,XML 设置也将优先。 - 如果仅调用
create_participant()
使用特定 QoS,则程序化设置将被使用。
- XML 设置优先:如果调用
环境变量方式:
- 另一种兼容的方法是通过设置环境变量
FASTDDS_STATISTICS
来启用统计 DataWriters。 - 启用的 DataWriters 将是通过属性和环境变量指定的数据主题名称别名的并集。
- 另一种兼容的方法是通过设置环境变量
示例代码
C++ 示例:
DomainParticipantQos pqos; // 激活 Fast DDS 统计模块 pqos.properties().properties().emplace_back("fastdds.statistics", "HISTORY_LATENCY_TOPIC;ACKNACK_COUNT_TOPIC;DISCOVERY_TOPIC;PHYSICAL_DATA_TOPIC");
XML 示例:
<participant profile_name="statistics_domainparticipant_conf_xml_profile"> <rtps> <propertiesPolicy> <properties> <!-- 激活 Fast DDS 统计模块 --> <property> <name>fastdds.statistics</name> <value>HISTORY_LATENCY_TOPIC;ACKNACK_COUNT_TOPIC;DISCOVERY_TOPIC;PHYSICAL_DATA_TOPIC</value> </property> </properties> </propertiesPolicy> </rtps> </participant>
Linux 环境变量示例:
export FASTDDS_STATISTICS="HISTORY_LATENCY_TOPIC;ACKNACK_COUNT_TOPIC;DISCOVERY_TOPIC;PHYSICAL_DATA_TOPIC"
Windows 环境变量示例:
set FASTDDS_STATISTICS=HISTORY_LATENCY_TOPIC;ACKNACK_COUNT_TOPIC;DISCOVERY_TOPIC;PHYSICAL_DATA_TOPIC
可用的所有统计主题
列出了所有可用的统计主题,包括但不限于历史延迟、网络延迟、发布吞吐量、订阅吞吐量等。
优先级说明
在创建自动启用的 DataWriter 时,其 QoS 的应用优先级如下:
- 如果存在特定主题的配置文件,则使用该配置。
- 如果不存在特定配置,但存在通用的数据写入器配置,则使用通用配置。
- 如果在 XML 文件中未定义任何配置,则应用推荐的统计 QoS。
此外,提到了一些命名规则和注意事项,例如需要在 XML 中定义用于通用和特定数据写入器的正确名称,以确保能够正确匹配并应用相应设置。
内容由零声教学AI助手提供,问题来源于学员提问