实时发布订阅协议(RTPS)DDS互操作网络协议规范-中文翻译_010
8.3.6 RTPS Header
如第8.3.3节所述,每个RTPS消息必须以Header开头。
8.3.6.1目的
Header用于将消息标识为属于RTPS协议,以标识所使用的RTPS协议的版本,并提供适用于消息中包含的子消息的上下文信息。
8.3.6.2内容
构成Header结构的元素在第8.3.3.1节中描述。只有在协议的主要版本也发生变化时,才能更改Header的结构。
8.3.6.3有效性
如果满足以下任何条件,则Header无效:
- 消息所包含的八位字节数少于包含完整标头的八位字节数。所需数量由PSM定义。
- 其协议值与PROTOCOL_RTPS的值不匹配。
- 主要协议版本大于实现支持的主要协议版本。
8.3.6.4接收方状态的变化
接收器的初始状态在8.3.4节中描述。 本节介绍新消息的标头如何影响Receiver的状态。
8.3.6.5 逻辑解释
无。
8.3.7 RTPS Submessages
RTPS协议版本2.1定义了几种Submessages。 它们分为两组:实体 - 子消息和解释器 - 子消息。 实体子消息以RTPS实体为目标。 解释器子消息修改RTPS接收器状态并提供有助于处理后续实体子消息的上下文。
实体子消息是:
- Data:包含有关应用程序日期对象的值的信息。 数据子消息由Writer(NO_KEY Writer或WITH_KEY Writer)发送给Reader(NO_KEY Reader或WITH_KEY Reader)。
- DataFrag:等效于Data,但仅包含新值的一部分(一个或多个片段)。 允许将数据作为多个片段传输,以克服传输消息大小限制。
- Heartbeat:描述Writer中可用的信息。心跳消息由Writer(NO_KEY Writer或WITH_KEY Writer)发送到一个或多个Reader(NO_KEY Reader或WITH_KEY Reader)。
- HeartbeatFrag:对于分片数据,描述Writer中可用的片段。 HeartbeatFrag消息由Writer(NO_KEY Writer或WITH_KEY Writer)发送到一个或多个Reader(NO_KEY Reader或WITH_KEY Reader)。
- Gap:描述与Reader不再相关的信息。Gap消息由Writer发送给一个或多个Reader。
- AckNack:向Writer提供有关Reader状态的信息。AckNack消息由Reader发送给一个或多个Writer。
- NackFrag:向Writer提供有关Reader状态的信息,更具体地说,描述了Reader仍然缺少哪些片段。NackFrag消息由Reader发送给一个或多个Writer。
解释器子消息: - InfoSource:提供有关后续实体子消息来源的信息。 该Submessage主要用于转发RTPS子消息。 这在当前的规范中没有讨论。
- InfoDestination:提供有关后续实体子消息的最终目的地的信息。 该Submessage主要用于转发RTPS子消息。 这在当前的规范中没有讨论。
- InfoReply:提供有关在何处回复后续子消息中显示的实体的信息。
- InfoTimestamp:为后续实体子消息提供源时间戳。
- Pad:用于在内存对齐需要时为消息添加填充。
图8-13 – RTPS Submessage
本节介绍每个子消息及其解释。 每个Submessage在表8.32中描述的标题下以相同的方式描述。
表8-32 - 用于描述每个Submessage的方案