当前位置: 首页 > news >正文

opendds初入门之对其支持的tools进行梳理

已经通过opendds的DevGuideExamples和example对opendds的基础功能有了一定了解,关注一下tools目录。

1:首先分析一下tools目录下各模块的功能:

dcpsinfo_dump  集中模式下,连接inforepo,通过快照的方式打印内部已有数据结构,DomainParticipant、Topic、Publisher、Subscriber,DataWriter/DataReader 等dissector  这是提供了一个wireshark插件,实现wireshark对rtps协议的支持,用于支持抓包分析。(插件的方式)excelRTD   是一个COM插件,让Excel能通过RTD接口订阅 DDS Topic数据,然后实时查看数据。在excel中执行=RTD("OpenDDS.ExcelRTD", , "RadarTrack", "velocity") 用inspect   OpenDDS的Topic检查工具,用于查看某个Topic 的类型和状态信息IntermediateTypeLang  将IDL类型转换为中间类型语言格式itl(实际上就是json),作为类型转换、跨语言绑定、代码生成的中间桥梁。(构建抽象语法树(AST),C++由opendds_idl原生支持,该模块主要是Java、JSON、XML等后端生成器)(貌似目前只支持了转成json)modeling  定义idl后,在Eclipse中拖拽进行编辑(构建发布订阅逻辑),生成.opendds文件,使用该文件自动生成代码。(使用这个工具,可以实现统一建模,生成对应的代码)monitor  订阅监控主题,订阅内置主题,用于监控 DDS 系统状态。rapidjson  开源第三方json库,供其他模块用。repoctl  用于管理集中发现服务中的inforepo的启动,停止,加入联邦逻辑。 (多个只管理本地的inforepo一起工作)rtpsrelay  中继服务器,用于跨过局域网之类通信用。

2:对各工具的实现底层进行梳理。

dcpsinfo_dump   opendds的底层就已经支持,建立在集中模式下,从inforepo中获取数据结构转换成字符串进行打印。dissector   是wareshark下的插件加载机制,会识别所有的dll和lib,加载对应的plugin_register 作为入口(填入对应的注册和销毁函数),开始业务处理。===》非关注模块,待探索。  (本质就是对接收到的报文,按照特定字节依次进行解析)excelRTD   excel的com插件机制,使用rtd的方式接收外部数据,实时进行展示。继承自IRtdServer,通过dll特定的入口函数实现注册和真正内部业务调用。===》非关注模块,待探索。   (excel通过rtd的方式,实时显示内部的数据)inspect   主要用到了Service_Participant下的其他不依赖idl的相关服务接口,比如create_recorder,create_replayer,create_writer,create_reader,create_typeless_topic,这些接口提供了泛型的topic的记录,回放,发送,接收,以及创建topic。===》适合构建采集器、桥接器、回放器、转发器等多种数据处理系统,不需要idl。===》这里主要是用到create_typeless_topic和create_recorder,在对应的回调中处理获取内容并打印。===》需要注意,在使用时,发布端和订阅段要完整数据类型,TypeObject的使用转成字符串打印。===》需要注意,在指定传输方式后的底层Transport,opendds内部是有默认的ip和端口的,比如组播ip。IntermediateTypeLang  只是提供了idl的json格式形式,为了给其他模块方便解析用(比如wireshark),用于json解析。===》该模块提供的是对itl文件中存储的json格式的数据进行解析的功能。====1:opendds是否支持idl生成对应json格式的itl文件。 2:这个json解析itl文件的意义是什么?wireshark怎么用?modeling  基于基于Eclipse的图形化编辑器,生成一些代码?====》直接用图形化拖拽,生成代码,直接运行。====》关注c++代码,该模块是对opendds的基本业务(发布订阅)的封装,暴露统一的接口,供模型调用时使用。====》也就是说对发布订阅等基础接口的二次封装,可以基于这个封装进行调用。monitor   带界面的监控软件,实现了我们对系统内的节点监控逻辑。====》基于opendds底层monitor lib已经对监控功能的支持,这里作为对应监控topic的订阅端,对订阅接收到的内容进行解析即可。====》带界面 + 专门的监控topic + 内置主题(识别节点上下线)实现。====》这个模块需要动态开启monitor的支持。(配置文件中开启)repoctl   inforepo的底层支持,联邦的概念对inforepo单节点部署进行扩展。====》inforepo的联邦管理,内部节点会互相备份。====》可以实现分布式,集群布局(二者可搭配)。====》核心代码dds下的inforepo中的FederatorManagerImpl.h 相关接口。rtpsrelay  参考tools下的dds下的Relay.idl,是relay功能支持的相关结构定义。====》首先需要分析定义的结构,支持realy节点之间的交互(水平),支持realy和自身管理域之间的节点交互(垂直)。====》有个分区的概念,支持订阅所有,支持向特定分区发布数据。====》中继模式对spdp,sedp,data的端口选择是依次加一,注意区分水平和垂直。====》分别定义了application_participant和relay_participant,实际上都是relay的核心支持(relay_participant主要用于管理层,属于控制面,管理发布状态、统计、分区信息, application_participant是真正的交互层,真正的链路)。====》relay_participant就好像路由表的作用,维护了管理层结构。====》application_participant的使用和opendds常用有差异,这里用到了ACE_Reactor。====》说是支持stun和ice的功能,只是建立在这个软件上,能支持识别到nat后的公网ip和端口,然后进行交互转发。====》这里是建立在spdp,sedp发布订阅关系表的基础上的,通过表找到对应目标链路进行转发。(内部有个guid概念,唯一关联)

3:总结

对opendds下的tools下的工具进行浅了解,从宏观的角度首先知道其作用以及内部实现原理。

在这里插入图片描述

http://www.dtcms.com/a/411148.html

相关文章:

  • 高通平台WiFi学习-- 详解WLAN进行问题调试时所需的日志及其配置方法
  • 静默期的跃迁:2025 年 AI 技术落地与产业重构路径
  • K8s学习----RBAC 基于角色的访问控制
  • 信阳建设企业网站免费行情网站大全下载
  • 阿里巴巴做实商网站的条件运城小程序开发公司
  • Python爬虫实战:获取豆瓣读书网读者评论信息与数据分析
  • 大连开发区论坛网展示型网站可以优化吗
  • Go语言net/http库使用详解
  • 02-Media-11-video_player.py 对H.264或H.265格式视频播放器的示例程序
  • 服装设计网站免费做好我局门户网站建设工作
  • 数组模拟加法——力扣66.加一
  • 做wish选品网站 数据网站一键生成logo的网站
  • CF Median Splits (中位数映射+前缀和)
  • LeetCode算法日记 - Day 53: 验证二叉搜索树、二叉搜索树的第K小元素
  • 前端Mock工具有哪些?常用前端Mock工具推荐、前端接口模拟工具对比与实战经验
  • 招聘网站排名网站建设家居
  • 【自然语言处理与大模型】RAG发展过程中的三个范式
  • 华为纯血鸿蒙系统怎么安装物联通
  • 基于 PyTorch 的 CIFAR-10 图像分类实践
  • 专业的新乡网站建设深圳企业网站建设专业
  • 旅游网站论文不让网站在手机怎么做
  • DeepSeek-V3.1最终版,DeepSeek-V3.1-Terminus来了!
  • 若依前后端分离版实现前端国际化步骤
  • 做游戏本测评的网站合肥建设局网站首页
  • PyTorch深度学习快速入门--B站小土堆笔记
  • 【论文阅读笔记】VeloCycle
  • OpenSpeedy简介
  • 【论文阅读 | IF 2025 | LFDT-Fusion:潜在特征引导的扩散 Transformer 模型在通用图像融合中的应用】
  • 网网站建设站建设做推广优化的网站有哪些
  • 企业建设网站个人总结网站内容与目录结构图