插件开发
RTI Connext DDS通过RTI可插拔传输API (PT API)与底层网络/通信传输进行交互。PT API位于DDS协议(DDS- rtps)层之下的协议栈中。 用于在domainparticipant之间发送和接收所有信息。
在发送端,PT API从DDS完整的RTPS包作为一个字节数组以及包的预期目的地(地址/端口)传递。 在接收端,PT API使用自己的内部传输机制获取这些数据包,并将它们交给上面的DDS-RTPS层。
+----------------------------+
| |
| <Application> |
| |
+............................+
| DDS API |
| |
| <Connext DDS > |
+............................+
| Pluggable Transport API |
| |
| <Transport Implementation> |
+----------------------------+
RTI Connext DDS使用PT API来实现捆绑在标准分发版中的所有支持的传输插件,包括UDP/IP、TCP/IP、TLS、DTLS、共享内存等。
应用程序开发人员可以使用PT API开发自定义传输。 定制传输必须用C开发,他们可以链接到最终的应用程序。
PT API的开发文档可以在这里找到。
自定义传输插件开发基于Connext定义好的代码框架,框架主要提供了17个必须实现的回调接口:
所有接口必须实现,其中重点函数包括:
- 接收接口创建及销毁
- 发送接口创建及销毁
- 数据的发送及接收
- 获取插件名称
- 接收端地址初始化
- 销毁插件
两个模块
完成了以下两个模块,基本上也就完成了插件开发。
- 插件库模块
- 插件配置模块
传输插件配置
可以通过xml文件的方式配置,也可以通过在代码中进行配置。
<transport_builtin>
<mask>MASK_NONE</mask>
</transport_builtin>
<discovery>
<initial_peers>
<element>customTransport://0.0.0.0</element>
</initial_peers>
</discovery>
<property>
<value>
<element>
<name>dds.transport.load_plugins</name>
<value>dds.transport.customPlugin</value>
<propagate>0</propagate>
</element>
<element>
<name>dds.transport.customPlugin.library</name>
<value>custom_transports</value>
<propagate>0</propagate>
</element>
<element>
<name>dds.transport.customPlugin.create_function</name>
<value>custom_Transport_xxxx_create</value>
<propagate>0</propagate>
</element>
<element>
<name>dds.transport.customPlugin.address</name>
<value>0.0.0.0</value>
<propagate>0</propagate>
</element>
<element>
<name>dds.transport.customPlugin.trace_level</name>
<value>1</value>
<propagate>0</propagate>
</element>
</value>
</property>
开发语言
定制传输必须用C开发。
其他
略。。。