关键字:OMG,RTPS,DDS
The Real-time Publish-Subscribe Protocol (RTPS) DDS Interoperability Wire Protocol Specification,Version 2.2,September 2014
8.3.5 RTPS SubmessageElements
每个RTPS消息包含可变数量的RTPS子消息。每个RTPS Submessage依次由一组名为SubmessageElements的预定义原子构建块构建。RTPS 2.1定义以下Submessage元素:GuidPrefix,EntityId,SequenceNumber,SequenceNumberSet,FragmentNumber,FragmentNumberSet,VendorId,ProtocolVersion,LocatorList,Timestamp,Count,SerializedData和ParameterList。
图 8-12 - RTPS SubmessageElements
8.3.5.1 GuidPrefix和EntityId
这些SubmessageElements用于封装Submessages中GUID_t(在第8.2.4.1节中定义)的GuidPrefix_t和EntityId_t部分。
表8.17 - GuidPrefix SubmessageElement的结构
表8-18 - GuidPrefix SubmessageElement的结构
8.3.5.2 VendorId
VendorId标识实现RTPS协议的中间件的供应商,并允许该供应商添加协议的特定扩展。供应商ID不是指包含DDS中间件的设备或产品的供应商。
表8.18 - GuidPrefix SubmessageElement的结构
协议保留以下值:
VENDORID_UNKNOWN
其他值必须由OMG分配。
8.3.5.3 ProtocolVersion
ProtocolVersion定义了RTPS协议的版本。
表8.20 - ProtocolVersion SubmessageElement的结构
RTPS协议版本2.1定义了以下特殊值:
PROTOCOLVERSION_1_0
PROTOCOLVERSION_1_1
PROTOCOLVERSION_2_0
PROTOCOLVERSION_2_1
PROTOCOLVERSION
8.3.5.4 SequenceNumber
序列号是64位有符号整数,可以取以下范围内的值:-2 ^ 63 <= N <= 2 ^ 63-1。选择64位作为序列号的表示可确保序列号永不包裹。序号从1开始。
表8.21 - SequenceNumber SubmessageElement的结构
该协议保留以下值:
SEQUENCENUMBER_UNKNOWN
8.3.5.5 SequenceNumberSet
SequenceNumberSet SubmessageElements用作多个消息的一部分,以提供有关某个范围内各个序列号的二进制信息。SequenceNumberSet中表示的序列号被限制为属于范围不大于256的区间。换句话说,有效的SequenceNumberSet必须验证:
maximum(SequenceNumberSet) - minimum(SequenceNumberSet)<256
minimum(SequenceNumberSet)> = 1
上述限制允许使用以高效且紧凑的位图方式表SequenceNumberSet。SequenceNumberSet SubmessageElements可用于有选择地请求重新发送一组序列号。
表8.22 - SequenceNumberSet SubmessageElement的结构
8.3.5.6 FragmentNumber
片段号是32位无符号整数,Submessages使用它来识别片段化序列化数据中的特定片段。片段编号从1开始。
表8.23 - FragmentNumber SubmessageElement的结构