当前位置: 首页 > news >正文

【FastDDS】XTypes Extensions

XTypes 扩展

1. 概述

本节将介绍 XTypes 规范中定义的 QoS 策略扩展。

2. 数据表示 QoS 策略(DataRepresentationQosPolicy)

此 XTypes QoS 策略规定了 DataWriter 和 DataReader 将要使用的数据表示形式。

DataWriter 会提供一种数据表示形式,用于与匹配的 DataReader 进行通信。DataReader 可以请求一种或多种数据表示形式,并且为了能与 DataWriter 进行通信,DataWriter 所提供的数据表示形式需要包含在 DataReader 的请求中。详见 <DataRepresentationQosPolicy>

2.1 QoS 策略数据成员列表

数据成员名称类型默认值DataReader 默认值DataWriter 默认值Topic 默认值
m_valuestd::vector空向量[XCDR_DATA_REPRESENTATION, XCDR2_DATA_REPRESENTATION][XCDR2_DATA_REPRESENTATION][XCDR_DATA_REPRESENTATION]

2.2 注意事项

此 QoS 策略适用于 Topic、DataReader 和 DataWriter 实体。它不能在已启用的实体上更改。

2.3 DataRepresentationId

有三个可能的值(参见 <DataRepresentationId>):

  • XCDR_DATA_REPRESENTATION:此选项对应于扩展 CDR 表示编码的第一个版本。
  • XML_DATA_REPRESENTATION:此选项对应于 XML 数据表示形式。
  • XCDR2_DATA_REPRESENTATION:此选项对应于扩展 CDR 表示编码的第二个版本。

2.4 示例

2.4.1 C++
// 此示例使用 DataWriter,但它也可应用于 Topic 实体。
// DataReader 的 DataRepresentationQosPolicy 包含在 TypeConsistencyQos 中
//(有关更多详细信息,请参见 TypeConsistencyQos 部分)。DataWriterQos writer_qos;// 将 XCDR v1 数据表示形式添加到有效表示形式列表中
writer_qos.representation().m_value.push_back(DataRepresentationId_t::XCDR_DATA_REPRESENTATION);// 将 XML 数据表示形式添加到有效表示形式列表中
writer_qos.representation().m_value.push_back(DataRepresentationId_t::XML_DATA_REPRESENTATION);// 在相应实体的创建中使用修改后的 QoS
writer_ = publisher_->create_datawriter(topic_, writer_qos);
2.4.2 XML

目前,此 QoS 策略无法使用 XML 进行配置。

3. 类型一致性实施 QoS 策略(TypeConsistencyEnforcementQosPolicy)

警告
此 QoS 策略将在未来版本中实现。

此 XTypes QoS 策略扩展定义了用于确定 DataWriter 中使用的数据类型与 DataReader 中使用的数据类型是否一致的规则。参见 <TypeConsistencyEnforcementQosPolicy>

3.1 QoS 策略数据成员列表

数据成员名称类型默认值
m_kindTypeConsistencyKindALLOW_TYPE_COERCION
m_ignore_sequence_boundsbooltrue
m_ignore_string_boundsbooltrue
m_ignore_member_namesbooltrue
m_prevent_type_wideningbooltrue
m_force_type_validationbooltrue

3.2 成员说明

  • m_kind:确定 DataWriter 类型中的类型是否必须与 DataReader 中的类型相等。有关更多详细信息,请参见 TypeConsistencyKind。
  • m_ignore_sequence_bounds:此数据成员控制在类型可赋值性中是否考虑序列边界。如果其值为 true,则不考虑序列的最大长度,这意味着长度为 L2 的序列 T2 可赋值给长度为 L1 的序列 T1,即使 L2 大于 L1。但如果为 false,则 L1 必须大于或等于 L2 才能认为序列是可赋值的。
  • m_ignore_string_bounds:控制在类型赋值中是否考虑字符串边界。如果其值为 true,则不考虑字符串的最大长度,这意味着长度为 L2 的字符串 S2 可赋值给长度为 L1 的字符串 S1,即使 L2 大于 L1。但如果为 false,则 L1 必须大于或等于 L2 才能认为字符串是可赋值的。
  • m_ignore_member_names:此布尔值控制在类型可赋值性中是否考虑成员名称。如果为 true,除了成员 ID 之外,成员名称也被视为可赋值性的一部分,这意味着具有相同 ID 的成员也必须具有相同的名称。但如果值为 false,则忽略成员名称。
  • m_prevent_type_widening:此数据成员控制是否允许类型拓宽。如果为 false,则允许类型拓宽;但如果为 true,则较宽的类型不能赋值给较窄的类型。
  • m_force_type_validation:控制服务是否需要类型信息来完成 DataWriter 和 DataReader 之间的匹配。如果启用,它必须具有完整的类型信息,否则不需要。

3.3 注意事项

此 QoS 策略适用于 DataReader 实体。它不能在已启用的实体上更改。

3.4 TypeConsistencyKind

有两个可能的值:

  • DISALLOW_TYPE_COERCION:DataWriter 和 DataReader 必须支持相同的数据类型才能进行通信。
  • ALLOW_TYPE_COERCION:DataWriter 和 DataReader 不需要支持相同的数据类型即可通信,只要 DataReader 的类型可从 DataWriter 的类型赋值即可。

文章转载自:

http://fXEzGYqE.ypktc.cn
http://1GLFzBQf.ypktc.cn
http://4TmvuAU8.ypktc.cn
http://8ioqHace.ypktc.cn
http://CWR5a2K0.ypktc.cn
http://wDYj0jae.ypktc.cn
http://5UYCCo6F.ypktc.cn
http://cs644WVc.ypktc.cn
http://NLCJaD0I.ypktc.cn
http://IXtqoF3i.ypktc.cn
http://VsqQbz1Y.ypktc.cn
http://usK0PvfI.ypktc.cn
http://awr60w4S.ypktc.cn
http://Iqf1eCJk.ypktc.cn
http://PWLXk0j7.ypktc.cn
http://FdVQFr7Y.ypktc.cn
http://3jl3FAFS.ypktc.cn
http://q72LBKKh.ypktc.cn
http://OLBWE75F.ypktc.cn
http://dLm1DbHs.ypktc.cn
http://ZMYgNRds.ypktc.cn
http://GWA5nRxw.ypktc.cn
http://2SIb6KKL.ypktc.cn
http://JZK2mPNH.ypktc.cn
http://7BFtfdI6.ypktc.cn
http://mL1Dc7Jm.ypktc.cn
http://obSmD7Qp.ypktc.cn
http://dhSIlL5A.ypktc.cn
http://67EBOf0o.ypktc.cn
http://WJ1K6tnd.ypktc.cn
http://www.dtcms.com/a/370022.html

相关文章:

  • 软考 系统架构设计师系列知识点之杂项集萃(142)
  • 【音视频】H264编码参数优化和cbr、vbr、crf模式设置
  • 软考 系统架构设计师系列知识点之杂项集萃(141)
  • 竞价代运营:百度竞价账户托管优化
  • Python实战:爬取百度热搜榜,制作动态可视化报告
  • Windows 设备音频录制 | WASAPI 音频数据采集 / 环回录制
  • uniapp新增页面及跳转配置方法
  • 西门子S7-200 SMART PLC:编写最基础的“起保停”程序
  • UDP-Server(2)词典功能
  • 最大似然估计:损失函数的底层数学原理
  • 今日分享:C++ -- list 容器
  • 报错:OverflowError: Python integer 4294967296 out of bounds for uint32
  • 贪心算法应用:蛋白质折叠问题详解
  • AI-调查研究-71-具身智能 案例分析:从ROS到Tesla Optimus的开源与商业化实践
  • 【嵌入式C语言】七
  • [数据结构] LinkedList
  • 【C++】引用的本质与高效应用
  • Date、BigDecimal类型值转换
  • 基于Node.js和Three.js的3D模型网页预览器
  • Scikit-learn Python机器学习 - 特征降维 压缩数据 - 特征提取 - 主成分分析 (PCA)
  • CSP-J/S IS COMING
  • GraphQL API 性能优化实战:在线编程作业平台指南
  • 【基础-判断】Background状态在UIAbility实例销毁时触发,可以在onDestroy()回调中进行系统资源的释放、数据的保存等操作。
  • PageHelper的使用及底层原理
  • 探寻卓越:高级RAG技术、架构与实践深度解析
  • 【51单片机】【protues仿真】基于51单片机PM2.5空气质量检测系统
  • AI工具深度测评与选型指南 - 图像生成与编辑类
  • RabbitMQ工作模式(下)
  • Custom SRP - Complex Maps
  • tp报错解决