关键字:OMG,RTPS,DDS
The Real-time Publish-Subscribe Protocol (RTPS) DDS Interoperability Wire Protocol Specification,Version 2.2,September 2014
8.平台无关模型(PIM)
8.1 引言
本节定义了RTPS协议的平台无关模型(PIM)。后续小节将PIM映射到各种平台,最基本的平台是原生UDP数据包。
PIM以“虚拟机”的形式描述协议。虚拟机的结构是根据8.2中描述的类构建的,其中包括写入者(Writer)和读取者(Reader)端点。这些端点使用8.3中描述的消息进行通信。8.4小节描述了虚拟机的行为,即端点之间发生的消息交换。它列出了互操作性的要求,并使用状态图定义了两个参考实现。8.5小节定义了用于为虚拟机配置与远程对等方通信所需的信息的发现协议。8.6小节描述了如何扩展协议以满足未来需求。最后8.7小节描述了如何使用RTPS实现DDS QoS和一些高级DDS功能。
引入RTPS虚拟机的唯一目的是以完整且清晰的方式描述协议。该描述的目的是不以任何方式约束内部实现。兼容实现的唯一标准是外部可观察的行为满足互操作性的要求。实现可以基于其他类,并且可以使用除状态机之外的编程结构来实现RTPS协议。
8.2 结构模块
本小节描述了作为通信参与者的RTPS实体的结构。RTPS协议使用的主要类如图8.1所示。
8.2.1 概述
RTPS实体是应用程序可见的DDS实体用于彼此通信的协议级端点。
每个RTPS实体与DDS实体一一对应。 HistoryCache构成DDS实体与其对应的RTPS实体之间的接口。例如,DDS DataWriter上的write方法会将CacheChange添加到其相应RTPS Writer的HistoryCache中。 RTPS Writer随后将CacheChange传输到所有匹配的RTPS Reader的HistoryCache中。 在接收端,RTPS Reader通知DDS DataReader新的CacheChange已到达HistoryCache,此时DDS DataReader可以选择使用DDS read或take API来访问它。
图 8 1 RTPS结构模块类图
此小节概述了RTPS虚拟机使用的主类以及用于描述其属性的类型。后续子小节详细描述了每个类。
8.2.1.1 RTPS虚拟机使用的类的总结
所有RTPS实体都继承自RTPS实体类。 表8.1列出了RTPS虚拟机使用的类。
表 8.1 RTPS实体和类概述
类 | 目的 |
---|---|
Entity | left-aligned 所有RTPS实体的基类。RTPS Entity类表示网络上其他RTPS实体可见的对象类。因此,RTPS Entity对象具有全局唯一标识符(GUID)并且可以在RTPS消息内引用 |
Endpoint | RTPS Entity的特殊化表示可以作为通信端点的对象。即可以是RTPS消息的源或目的地址的对象。 |
Participant | 所有RTPS实体的容器,它们共享公共属性并位于单个地址空间中 |
Writer | RTPS Endpoint的特殊化,表示可以作为传递CacheChanges的消息源的对象 |
Reader | RTPS Endpoint的特殊化,表示可用于接收传递CacheChanges的消息的对象 |
HistoryCache | 用于临时存储和管理数据对象修改集合的容器类。在写入者这一端,它包含写入者对数据对象所做更改的历史记录。没有必要保留所有更改的完整历史。而需要的是为现有和未来匹配的RTPS读取者端点提供服务所需的部分历史记录。所需的部分历史记录取决于DDS QoS以及与匹配的读取者端点的通信状态。在读取者这一端,它包含匹配的RTPS Writer端点对数据对象所做更改的历史记录。没有必要保留所有更改的完整历史。而需要的是包含根据需要从匹配的写入者接收的数据改变叠加的部分历史,以满足相应的DDS DataReader的需要。此叠加的规则和所需的部分历史记录的数量取决于DDS QoS以及与匹配的RTPS Writer端点的通信状态。 |
CacheChange | 表示对数据对象进行的单个更改。包括数据对象的创建,修改和删除。 |
Data | 表示可能与对数据对象所做的更改相关联的数据。 |
8.2.1.2 用于描述RTPS实体和类的类型的总结
虚拟机使用的实体和类都包含一组属性。表8.2总结了属性的类型。
表 8.2 RTPS实体和类中显示的属性类型
表8,2 RTPS实体和类中显示的属性类型(续)
8.2.1.3 RTPS实体的配置属性
RTPS实体由一组属性进行配置。 其中一些属性映射到相应DDS实体上设置的QoS策略。其他属性表示允许将协议的行为调整到特定传输方式和部署场景的参数。其他属性编码RTPS实体的状态,不用于配置行为。
用于配置RTPS实体子集的属性如图2.2所示。 配置Writer和Reader实体的属性与协议行为密切相关,将在8.4中介绍。
图 8.2用于配置主RTPS实体的属性
本小节的剩余部分更详细地描述了每个RTPS实体