一种DDS内部实体数据关联和处理的实现方法技术

技术编号:21183602 阅读:28 留言:0更新日期:2019-05-22 14:40
本发明专利技术公开了一种DDS内部实体数据关联和处理的实现方法,通过创建一个内部控制数据的QoS策略INNER_CTRL_DATA,再基于DDS内置主题,通过回调函数触发实现消息处理和数据监听。本发明专利技术解决了现有技术实现中数据结构信息管理不易、开发复杂以及代码耦合性强等问题,提高了软件的开发效率,降低了软件设计的难度。

An Implementation Method of Entity Data Association and Processing in DDS

The invention discloses an implementation method for data association and processing of DDS internal entities. By creating an internal control data QoS policy INNER_CTRL_DATA, and then triggering message processing and data listening through callback function based on DDS built-in theme. The invention solves the problems of difficult data structure information management, complex development and strong code coupling in the realization of the existing technology, improves the efficiency of software development, and reduces the difficulty of software design.

【技术实现步骤摘要】
一种DDS内部实体数据关联和处理的实现方法
本专利技术涉及一种基于DDS的数据监听方法,尤其涉及一种DDS内部实体数据关联和处理的实现方法。
技术介绍
随着信息化的建设发展,需要面对多变的海量数据信息,实时、高效、高速的数据交互具有至关重要的地位。因此,建立实时性强、可靠性高、安全性好的信息传输中间件,提高系统互联能力,满足系统内各种信息交换和共享需求,并解决应用软件之间的数据共享和集成问题是亟待解决的问题。数据分发服务(DataDistributionService,DDS)是对象管理组织(ObjectManagementGroup,OMG)继推出CORBA规范后颁布的实现订阅/发布通信模式、满足实时性要求的软件设计标准和规范,该规范对分布式实时系统中数据发布、传递和接收的接口和行为进行了标准化。DDS纯粹以数据为中心来进行数据分发,并将资源状况、对资源的期待程度、网络状况等都用QoS参数来描述,大大增强了通信的实时性和灵活性,简化了分布式系统中数据的有效发布,为实时环境下以数据为中心的分布式应用提供高效、有用的通信服务。DDS定义了以数据为中心的发布/订阅机制,以数据为中心的发布/订阅模型基于全局数据空间(GlobalDataSpace)的概念,如图1所示。DDS规范包括域参与者、发布者、订阅者、数据类型、数据写入者、数据读取者、主题、内置主题和QoS等。在具体的产品实现中,DDS处于操作系统之上、用户应用程序之下,可以很好的屏蔽底层系统、总线的异构等细节,对应用数据提供统一的API接口,具体如下图2所示。DDS使用域来划分数据通信的子空间,隶属于同一个域的各个域参与者(Participant)可以互相通信,每个域参与者里面可以有一个或多个发布者(Publisher)或订阅者(Subscriber),每个发布者里面可以有一个或多个数据写入者(DataWriter),每个订阅者里面也可以有一个或多个数据读取者(DataReader)。数据写入者通过数据通道将数据发送到相应的数据读取者处,数据读取者则从数据通道中获取自己感兴趣的数据,数据写入者和数据读取者通过主题(Topic)和QoS进行匹配和建立联系,一般每个数据写入者或数据读取者只写入或读取一种类型的数据。随着DDS越来越多的被使用,对其配套的工具需求较为迫切,尤其对DDS的监控管理工具的诉求较为强烈,需要监控当前各个域下的主题、发布者、订阅者等相关信息。DDS标准中有规定了一些内置主题(比如:DCPSPublication、DCPSSubscription和DCPSParticipant等),我们可以通过内置主题来实现相关的监控管理,但是DDS标准没有规定与内置主题相匹配的内部控制数据的相关QoS策略,当前一般的实现就通过一些全局变量来记录相关数据,这样不但会提高代码的耦合度,而且在多线程的场景下降低处理效率和性能。
技术实现思路
专利技术目的:本专利技术提供了一种实现数据监听的DDS内部实体数据关联和处理的实现方法,创建内部控制数据策略INNER_CTRL_DATAQoS,通过DataReader直接获取数据信息,从而实现基于DDS内部主题的数据监听和管理。技术方案:本专利技术所述的一种DDS内部实体数据关联和处理的实现方法,包括步骤:(1)建立一个基于DDS的通信环境,创建一个ID为a的域,创建域参与者对象test_domain,其中,a的取值范围为0~230;(2)基于test_domain创建一个用于读数据的订阅者对象test_sub;(3)通过DDS标准规定的应用程序编程接口获取test_domain的内置订阅者;(4)通过DDS标准规定的应用程序编程接口获取DDS规范中定义的内置主题对应的数据读取者DataReader的指针信息及QoS策略信息;优选地,所述内置主题为“DCPSPublication”。(5)创建并设置DataReader的内部控制数据策略INNER_CTRL_DATAQoS信息,包括用于存储枚举类型的变量inner_type和用于存储订阅者test_sub的地址的字段value;所述枚举类型包括成员变量:表示默认值的“DDS_INNER_CTRL_DEFAULT”、表示订阅者的“DDS_INNER_CTRL_SUB”、表示发布者的“DDS_INNER_CTRL_PUB”、表示数据写入者的“DDS_INNER_CTRL_WRITER”、表示数据读取者的“DDS_INNER_CTRL_READER”、表示保留字段的“DDS_INNER_CTRL_RESERVE”,其枚举值分别为0、1、2、3、4、255;(6)在DataReader上注册回调函数;(7)进入监听状态,等待回调函数被触发;(8)当监听到数据时,DataReader的回调函数被触发,通过解析回调函数的输入参数,获取输入参数的QoS策略的配置信息,判断其中的INNER_CTRL_DATAQoS信息中的inner_type是否赋值为步骤(5)中设定的枚举类型,若是则执行步骤(9),否则跳转至步骤(7);(9)判断INNER_CTRL_DATAQoS信息中的value字段是否为空,若不为空,则获取到订阅者test_sub信息,执行步骤(10);否则,跳转至步骤(7);(10.1)获取当前域的主题名称信息;(10.2)创建并在test_domain上注册动态数据类型;(10.3)根据步骤(10.1)中的主题名称信息,创建相对应的主题;(10.4)根据INNER_CTRL_DATAQoS策略信息中value存储的订阅者地址信息,创建步骤(10.3)所述主题对应的新的数据读取者;(11)在新的数据读取者上设置回调函数,进行当前域和该主题的数据监听、监控和统计。有益效果:本专利技术提高了DDS工具软件的开发效率,降低了代码的耦合度,降低了DDS工具软件的设计难度,同时,提高了代码的处理性能。附图说明图1是DDS架构图;图2是DDS中间件位置示意图;图3是本专利技术实施例基于DDS内置主题DCPSPublication来监听指定域信息流程示意图;图4是本专利技术实施例监听指定域下各个主题消息流程图。具体实施方式下面结合附图和实施例对本专利技术的技术方案作进一步的说明。如图3所示,以DCPSPublication作为DDS内置主题为例,本专利技术所述的一种DDS内部实体数据关联和处理的实现方法,包括步骤:(1)创建一个域ID为10的域参与者(DomainParticipant)对象test_domain;(2)基于test_domain创建一个订阅者(Subscriber)对象test_sub;(3)通过DDS的对外接口方法获取test_domain的内置订阅者buildin_sub;(4)通过DDS的对外接口方法获取内置主题“DCPSPublication”对应的数据读取者(DataReader)buildin_datareader;(5)通过DDS的对外接口方法获取buildin_datareader当前的QoS值信息;(6)设置buildin_datareader当前的QoS值中的INNER_CTRL_DATAQoS策略信息,该QoS策略字段定义及说明见表1和表2,把INNER_CTRL_DA本文档来自技高网
...

【技术保护点】
1.一种DDS内部实体数据关联和处理的实现方法,其特征在于,包括步骤:(1)建立一个基于DDS的通信环境,创建一个ID为a的域,创建域参与者对象test_domain,其中,a的取值范围为0~230;(2)基于test_domain创建一个用于读数据的订阅者对象test_sub;(3)通过DDS标准规定的应用程序编程接口获取test_domain的内置订阅者;(4)通过DDS标准规定的应用程序编程接口获取DDS规范中定义的内置主题对应的数据读取者DataReader的指针信息及QoS策略信息;(5)创建并设置DataReader的内部控制数据策略INNER_CTRL_DATA QoS信息,包括用于存储枚举类型的变量inner_type和用于存储订阅者test_sub的地址的字段value;(6)在DataReader上注册回调函数;(7)进入监听状态,等待回调函数被触发;(8)当监听到数据时,DataReader的回调函数被触发,通过解析回调函数的输入参数,获取输入参数的QoS策略的配置信息,判断其中的INNER_CTRL_DATA QoS信息中的inner_type是否赋值为步骤(5)中设定的枚举类型,若是则执行步骤(9),否则跳转至步骤(7);(9)判断INNER_CTRL_DATA QoS信息中的value字段是否为空,若不为空,则获取到订阅者test_sub信息,执行步骤(10);否则,跳转至步骤(7);(10)根据当前域的主题名称信息创建对应的主题,并基于test_sub,通过动态数据类型的方式创建与主题对应的新的数据读取者;(11)在新的数据读取者上设置回调函数,进行当前域和该主题的数据监听、监控和统计。...

【技术特征摘要】
1.一种DDS内部实体数据关联和处理的实现方法,其特征在于,包括步骤:(1)建立一个基于DDS的通信环境,创建一个ID为a的域,创建域参与者对象test_domain,其中,a的取值范围为0~230;(2)基于test_domain创建一个用于读数据的订阅者对象test_sub;(3)通过DDS标准规定的应用程序编程接口获取test_domain的内置订阅者;(4)通过DDS标准规定的应用程序编程接口获取DDS规范中定义的内置主题对应的数据读取者DataReader的指针信息及QoS策略信息;(5)创建并设置DataReader的内部控制数据策略INNER_CTRL_DATAQoS信息,包括用于存储枚举类型的变量inner_type和用于存储订阅者test_sub的地址的字段value;(6)在DataReader上注册回调函数;(7)进入监听状态,等待回调函数被触发;(8)当监听到数据时,DataReader的回调函数被触发,通过解析回调函数的输入参数,获取输入参数的QoS策略的配置信息,判断其中的INNER_CTRL_DATAQoS信息中的inner_type是否赋值为步骤(5)中设定的枚举类型,若是则执行步骤(9),否则跳转至步骤(7);(9)判断INNER_CTRL_DATAQoS信息中的value字段是否为空,若不为空,则获取到订阅者test_sub信息,执行步骤(10);否则,跳转至步骤(7);(10)根据当前域的主题名称信息创建对应的主题,并基于test_sub,通过动态数据类型的方式创建与...

【专利技术属性】
技术研发人员:袁东浦勇吴俊王啸张古今李敏敏
申请(专利权)人:南京华讯方舟通信设备有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1