【FastRTPS】对象和数据结构

对象和数据结构

eProsima Fast RTPS中的对象是按模块划分的。

Publisher Subscriber模块

RTPS标准的上层抽象,有以下几个结构:

Domain(域):用于创建、管理、销毁高层的Participant

Pariticipant(参与者):包含多个Publisher和Subscriber,并管理它们的配置

    ParticipantAttributes:创建Participant的配置参数

    ParticipantListener:在Participant范围内实现回调函数

Publisher(发布者):发送 topic 数据

    PublisherAttributes:创建Publisher的配置参数

    PublisherListener:在Publisher范围内实现回调函数

Subscriber(订阅者):接收订阅的topic数据

     SubscriberAttributes:创建Subscriber的配置参数

     SubscriberListener:在Subscriber范围内实现回调函数

RTPS模块

对应于RTPS标准,可以直接与RTPS实体交互。包含几个子模块:

1. RTPS Common 模块

CacheChange_t:表示Topic的一个Change,存储在History缓冲队列中。

Data:Change消息体,可为空

Message:定义了RTPS消息的组织结构

Header:RTPS协议消息的标准头,包含vendor id(供应商 ID)

Sub-Message Header:RTPS子消息标识符,一个RTPS消息可以包含几个子消息。

MessageReceiver:反序列化、解释、分发RTPS消息

RTPSMessageCreator:构建封装RTPS消息

2. RTPS Domain 模块

RTPSDomain:用于创建、管理、销毁低层RTPSParticipant

RTPSParticipant:包含多个RTPS Writer和Reader,并管理它们的配置

    RTPSParticipantAttributes:创建RTPSParticipant的配置参数

    PDPSimple:Participant Discovery Protocal(参与者发现协议,RTPS内置子协议),用于发现网络中的其他Participant。

    EDPSimple:Endpoint Discovery Protocal(端点发现协议,RTPS内置子协议),用于发现网络中的其他Participant的EndPoint(即RTPSWriters 和 RTPSReaders)。

    EDPStatic:EDPSimple的静态类,用于从用户文件中读取其他远程端点的信息

    TimedEvent:周期任务、定时任务的基类

    ResourceEvent:管理时间和动作驱动的事件的基类。

    ReceiverResource:管理消息接收操作的基类。

    SenderResource:管理消息发送操作的基类。

3. RTPS Reader 模块

RTPSReader:从网络中匹配的RTPSWriters接收消息的基类,分为StatelessReader和StatefulReader。

    ReaderAttributes:创建RTPSReader的配置参数

    ReaderHistory:存储接收到的Topic Change数据

    ReaderListener:在Reader范围内实现回调函数

    StatelessReader:高效模式的Reader,不提供消息确认。

    StatefulReader:可靠模式的Reader,会向Writer发送消息确认。

        WriterProxy:Writer的历史元素状态的镜像,用来判断哪些是没有被正确接收,需要重新发送的数据。

4. RTPS Writer 模块

RTPSWriter:向网络中匹配的RTPSReaderf发送消息的基类,分为StatelessWriter和StatefulWriter。

    WriterAttributes:创建Subscriber的配置参数

    WriterHistory:存储要发送的Topic Change数据,并安排发送

    StatelessWriter:高效模式的Writer,不需要消息确认,也不会维护远程实体的信息。

    StatefulWriter:可靠模式的Writer,需要Reader回复消息确认。支持Qos和内容过滤。

        ReaderProxy:匹配Reader的历史元素的镜像。用于确保同步,并确定哪些是需要在给定时间重新发送的数据

        ReaderLocator:定位Reader在网络中的位置

数据设计

RTPS中使用的数据结构可以分为三种:

1. 全局数据结构

RTPS架构中主体部分用到的数据。例如,模块与最终用户共享的数据,如ReaderLocator、ReaderProxy、WriterProxy的数据

2. 内部数据结构

模块间交换的数据。如CacheChanges,RTPSWriter和RTPSReader都会用到这个数据结构修改History和创建RTPS消息

3. 临时数据结构

临时用到的数据。最重要最常用的就是RTPS消息,通过CacheChanges创建,并在发送之后销毁。

 

 

你可能感兴趣的:(C++,FastRTPS)