ZBLOG

3.1.2.2.14. WireProtocolConfigQos This QoS Policy allows the configuration of the wire protocol. List of QoS Policy data members: Data Member Name Type Default Value prefix GuidPrefix_t 0 participant_id int32_t -1 builtin BuiltinAttri...

3.1.2.2.14. WireProtocolConfigQos

此QoS策略允许配置线协议的相关参数。

QoS政策数据成员列表:

数据成员名称 类型 默认值
prefix GuidPrefix_t 0
participant_id int32_t -1
builtin BuiltinAttributes -
port PortParameters -
default_unicast_locator_list LocatorList 空列表
default_multicast_locator_list LocatorList 空列表
default_external_unicast_locators ExternalLocators
ignore_non_matching_locators bool false

数据成员说明:

  • prefix: 允许用户手动设置GUID前缀。
  • participant_id: 设置参与者标识符。默认情况下由域自动生成。
  • builtin: 该数据成员允许配置内置参数。
  • port: 该数据成员允许配置与RTPS协议相关的端口参数(众所周知的端口)。
  • default_unicast_locator_list: 指定在未定义单播定位符的情况下,任何在RTPSParticipant内定义的端点所使用的默认单播定位符列表。该列表应至少包含一个定位符。
  • default_multicast_locator_list: 存储用于在未定义多播定位符时,任何在RTPSParticipant内定义的端点所使用的默认多播定位符列表。通常留空。
  • default_external_unicast_locators: 定义在未定义单播定位符时,用于参与者内部任何端点的外部定位符。
  • ignore_non_matching_locators: 定义是否忽略从其他DDS参与者收到的不匹配其宣布的任何定位符。

注意事项

  • 此QoS策略适用于DomainParticipant实体。

重要提示

  • 在启用实体中唯一可变字段是m_DiscoveryServers,它包含在builtin中的discovery_config内(请参见运行时修改远程服务器列表)。

示例代码

以下示例仅适用于DomainParticipant实体:

  1. // 创建DomainParticipantQos对象
  2. DomainParticipantQos participant_qos;
  3. // 设置GUID前缀
  4. std::istringstream("72.61.73.70.66.61.72.6d.74.65.73.74") >> participant_qos.wire_protocol().prefix;
  5. // 手动设置participantId
  6. participant_qos.wire_protocol().participant_id = 11;
  7. // 配置内置属性
  8. participant_qos.wire_protocol().builtin.discovery_config.discoveryProtocol =
  9. eprosima::fastdds::rtps::DiscoveryProtocol::SERVER;
  10. // 添加单播位置到单播列表
  11. eprosima::fastdds::rtps::Locator_t server_locator;
  12. eprosima::fastdds::rtps::IPLocator::setIPv4(server_locator, "192.168.10.57");
  13. server_locator.port = 56542;
  14. participant_qos.wire_protocol().builtin.metatrafficUnicastLocatorList.push_back(server_locator);
  15. // 添加具有外部IP和其他参数的元流量外部位置
  16. eprosima::fastdds::rtps::LocatorWithMask meta_external_locator;
  17. meta_external_locator.kind = LOCATOR_KIND_UDPv4;
  18. meta_external_locator.port = 34567;
  19. meta_external_locator.mask(24);
  20. participant_qos.wire_protocol().builtin.metatraffic_external_unicast_locators[1][0].push_back(
  21. meta_external_locator);
  22. // 向默认单播位置列表添加位置
  23. eprosima::fastdds::rtps::Locator_t unicast_locator;
  24. eprosima::fastdds::rtps::IPLocator::setIPv4(unicast_locator, 192, 168, 1, 41);
  25. unicast_locator.port = 7400;
  26. participant_qos.wire_protocol().default_unicast_locator_list.push_back(unicast_locator);
  27. // 向默认多播位置列表添加位置
  28. eprosima::fastdds::rtps::Locator_t multicast_locator;
  29. eprosima::fastdds::rtps::IPLocator::setIPv4(multicast_locator, 192, 168, 1, 41);
  30. multicast_locator.port = 7400;
  31. participant_qos.wire_protocol().default_multicast_locator_list.push_back(multicast_locator);
  32. // 添加具有外部IP和其他参数的默认外部位置
  33. eprosima::fastdds::rtps::LocatorWithMask external_locator;
  34. external_locator.kind = LOCATOR_KIND_UDPv4;
  35. external_selector.port = 23456;
  36. external_selector.mask(24);
  37. participant_qos.wire_protocol().default_external_unicast_locators[1][0].push_back(external_selector);
  38. // 丢弃不匹配的位置
  39. participant_qos.wire_protocol().ignore_non_matching_locators = true;
  40. // 增加变更尝试次数
  41. participant_qos.wire_protocol().builtin.mutation_tries = 300u;
  42. // 使用修改后的QoS创建DomainParticipant实体
  43. participant_ = factory_->create_participant(domain, participant_qos);

注意

有关扩展XML信息,请参考DomainParticipant配置和Builtin参数XML部分。


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?