一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种gdbus对象接口的动态自适应方法和装置与流程

2021-11-15 18:49:00 来源:中国专利 TAG:

一种gdbus对象接口的动态自适应方法和装置
【技术领域】
1.本发明涉及通信技术领域,特别是涉及一种gdbus对象接口的动态自适应方法和装置。


背景技术:

2.d

bus是一个消息总线系统,用于进程间的通信,可满足进程间通信的所有需求。d

bus总线协议采用glib统一c语言库的实现版本是为gdbus。
3.d

bus技术是rpc(remote procedure call,远程过程调用)ipc(inter

process communication,进程间通信)机制,将数据抽象为接口,其rpc通过对象接口的模式来完成。
4.gdbus的接口描述是xml文件,首先需要gdbus

codegen工具来生成对应c语言的接口源文件,c语言的接口源文件才能加入编译工程,整个软件工程才能由编译器生成二进制镜像。
5.由于编译生成镜像前gdbus的对象接口对应编程语言的源代码必须依据接口描述xml文件来提前生成,同一个接口因设备硬件或其它条件的差异,导致接口内容存在差异时,其接口必须要对应有多个差异个数的接口描述xml文件,进而生成多个差异个数的对象接口源代码文件,然后编译出对应多个差异个数的二进制软件镜像。各软件镜像的差异与需求的接口差异一一对应。现有技术中,多款设备的共有接口存在差异,使得共用版本软件镜像的设想无法实现。
6.鉴于此,如何克服现有技术所存在的缺陷,解决上述技术问题,是本技术领域待解决的难题。


技术实现要素:

7.针对现有技术的以上缺陷或改进需求,本发明提供一种gdbus对象接口的动态自适应方法和装置,使对象接口可以在软件镜像运行时由自身的运行环境进行自适应匹配,使gdbus的同一个接口因硬件或其它条件差异而有不同时,不再需要针对差异适配多个差异个数的软件镜像,而是能在统一的软件镜像中进行动态自适应匹配。
8.本发明实施例采用如下技术方案:
9.第一方面,本发明提供了一种gdbus对象接口的动态自适应方法,包括:
10.建立关于不同接口的接口别名、接口真名以及差异表征的映射关系表,并制作出统一的接口描述文件;
11.根据统一的接口描述文件生成接口源文件,并由接口源文件、系统工程源文件以及映射关系表编译打包生成统一的软件镜像;
12.软件镜像运行时根据不同接口的差异表征在映射关系表中匹配到对应的接口别名,根据接口别名对应的别名接口创建出其镜像副本;
13.根据映射关系表重定向镜像副本的接口别名到对应的接口真名,引用重定向后的接口副本为gdbus对象接口,完成gdbus对象接口的动态自适应。
14.进一步的,所述建立关于不同接口的接口别名、接口真名以及差异表征的映射关系表,并制作出统一的接口描述文件具体包括:
15.将存在差异的不同接口分别命名一个接口别名;
16.创建关于差异表征

接口别名

接口真名的三元映射关系表;
17.根据不同接口的接口别名以及接口描述文件归并制作出统一的接口描述文件;
18.其中,多个接口别名对应一个接口真名。
19.进一步的,所述根据统一的接口描述文件生成接口源文件,并由接口源文件、系统工程源文件以及映射关系表编译打包生成统一的软件镜像具体包括:
20.用代码生成工具根据统一的接口描述文件生成对应指定语言接口的接口源文件;
21.将接口源文件、系统工程源文件以及映射关系表送入编译器进行编译打包;
22.编译器编译打包出统一的软件镜像。
23.进一步的,所述代码生成工具为gdbus的代码生成工具gdbus

codegen。
24.进一步的,所述软件镜像运行时根据不同接口的差异表征在映射关系表中匹配到对应的接口别名,根据接口别名对应的别名接口创建出其镜像副本具体包括:
25.软件镜像运行时根据接口的不同判决出差异表征;
26.通过差异表征查询映射关系表以得到相对应的接口别名;
27.由接口别名获得相对应的别名接口,以该别名接口为蓝本创建出其镜像副本。
28.进一步的,由接口别名获得的相对应的别名接口位于只读区,以该别名接口为蓝本创建出的镜像副本位于读写区。
29.进一步的,所述根据映射关系表重定向镜像副本的接口别名到对应的接口真名,引用重定向后的接口副本为gdbus对象接口,完成gdbus对象接口的动态自适应具体包括:
30.根据映射关系表重定向镜像副本的接口别名到对应的接口真名;
31.gdbus对象接口引用该镜像副本重定向后的接口副本以替换掉原有蓝本;
32.完成gdbus对象接口的动态自适应。
33.进一步的,所有接口描述文件均为xml文件。
34.进一步的,所述软件镜像为二进制软件镜像。
35.另一方面,本发明提供了一种gdbus对象接口的动态自适应装置,具体为:包括至少一个处理器和存储器,至少一个处理器和存储器之间通过数据总线连接,存储器存储能被至少一个处理器执行的指令,指令在被处理器执行后,用于完成第一方面中的gdbus对象接口的动态自适应方法。
36.与现有技术相比,本发明实施例的有益效果在于:使gdbus的同一个接口因硬件或其它条件差异而有不同时,不再需要针对差异适配多个差异个数的软件镜像,而是能在统一的软件镜像中进行动态自适应匹配,不必再为不同的硬件设备生成不同的二进制软件镜像,做到镜像归一,显著降低了版本管理、源码分枝管理以及同步的成本,极大的提高了软件镜像对硬件设备的通配率。
【附图说明】
37.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍。显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于
本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
38.图1为本发明实施例1提供的一种gdbus对象接口的动态自适应方法流程图;
39.图2为本发明实施例1提供的步骤100具体流程图;
40.图3为本发明实施例1提供的步骤200具体流程图;
41.图4为本发明实施例1提供的步骤300具体流程图;
42.图5为本发明实施例1提供的步骤400具体流程图;
43.图6为本发明实施例2提供的gdbus对象接口自适应到适合b设备接口的接口数据示意图;
44.图7为本发明实施例3提供的一种gdbus对象接口的动态自适应系统模块框图;
45.图8为本发明实施例4提供的一种gdbus对象接口的动态自适应装置结构示意图。
【具体实施方式】
46.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
47.本发明是一种特定功能系统的体系结构,因此在具体实施例中主要说明各结构模组的功能逻辑关系,并不对具体软件和硬件实施方式做限定。
48.此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。下面就参考附图和实施例结合来详细说明本发明。
49.实施例1:
50.如图1所示,本发明实施例提供一种gdbus对象接口的动态自适应方法,具体步骤如下。
51.步骤100:建立关于不同接口的接口别名、接口真名以及差异表征的映射关系表,并制作出统一的接口描述文件。
52.步骤200:根据统一的接口描述文件生成接口源文件,并由接口源文件、系统工程源文件以及映射关系表编译打包生成统一的软件镜像。
53.步骤300:软件镜像运行时根据不同接口的差异表征在映射关系表中匹配到对应的接口别名,根据接口别名对应的别名接口创建出其镜像副本。
54.步骤400:根据映射关系表重定向镜像副本的接口别名到对应的接口真名,引用重定向后的接口副本为gdbus对象接口,完成gdbus对象接口的动态自适应。
55.基于上述步骤,本发明在接口描述时,通过创建接口别名、接口真名以及差异表征的映射关系表,形成具有差异的不同接口间的别名、真名的映射关系,并编译成统一的软件镜像。在软件镜像运行时,再根据映射关系表匹配不同接口的接口别名并创建镜像副本,最后重定向到对应的接口真名,以完成接口的匹配回归。通过这样的设计方式,能够起到软件镜像归一的技术效果,实现对象接口在统一的软件镜像中进行动态自适应匹配的目的。
56.需说明的是,在本实施例中,为了方便描述,将接口区分为真名接口以及别名接口,而两者对应的名称则为接口真名以及接口别名,其中真名接口(指接口本身)对应的拥有一个接口真名(指接口名称),而别名接口则根据不同设备差异表征具备不同的接口别
名。
57.如图2所示,在本优选实施例中,步骤100具体包括如下步骤。
58.步骤101:将存在差异的不同接口分别命名一个接口别名。
59.步骤102:创建关于差异表征

接口别名

接口真名的三元映射关系表。
60.步骤103:根据不同接口的接口别名以及接口描述文件归并制作出统一的接口描述文件。
61.在上述步骤中,不同接口间存在的差异可以是硬件的不同也可以是条件的不同,只要有其中一项不同,便为该不同的接口命名一个接口别名。一般情况下,这些不同对象接口的接口真名共用一个,而根据不同差异产生的接口别名则各不相同,最后根据每个差异表征对应一个不同的接口别名以及对应一个相同的接口真名的模式创建出关于差异表征

接口别名

接口真名的三元映射关系表。另外,对于每个接口别名都会对应有一个接口描述文件,将各个接口描述文件由接口别名统一到一个接口描述文件,是为上述步骤中归并制作出的统一的接口描述文件。
62.在本优选实施例中,所有的接口描述文件均为xml文件。这是基于gdbus的特性,其接口描述文件是xml文件。
63.如图3所示,在本优选实施例中,步骤200具体包括如下步骤。
64.步骤201:用代码生成工具根据统一的接口描述文件生成对应指定语言接口的接口源文件。
65.步骤202:将接口源文件、系统工程源文件以及映射关系表送入编译器进行编译打包。
66.步骤203:编译器编译打包出统一的软件镜像。
67.在上述步骤中,使用的代码生成工具为gdbus的代码生成工具gdbus

codegen,gdbus

codegen根据步骤100中归并制作出的统一的接口描述文件来生成对应指定语言接口的源码文件(接口源文件,或称接口源码),然后将接口源码、系统工程源码(系统工程源文件)以及步骤100中生成的三元映射关系表送入编译器,通过编译器打包成归并统一的软件镜像包。
68.如图4所示,在本优选实施例中,步骤300具体包括如下步骤。
69.步骤301:软件镜像运行时根据接口的不同判决出差异表征。
70.步骤302:通过差异表征查询映射关系表以得到相对应的接口别名。
71.步骤303:由接口别名获得相对应的别名接口,以该别名接口为蓝本创建出其镜像副本。
72.对于上述步骤300以及还未详细扩充的步骤400,是在步骤100以及步骤200完成归一软件镜像后,软件镜像进行运行时的步骤,所以步骤300以及步骤400也可以说是接口动态自适应的步骤。
73.在上述步骤300中,已经开始进行接口的动态自适应匹配,此时软件镜像也开始运行,运行的软件镜像根据接口的不同判决出其差异表征,然后通过三元映射关系表中每个差异表征对应一个不同的接口别名的规则来查询得到与该差异表征相对应的接口别名,获得对应的接口别名后再由该接口别名获得位于只读取的相对应的别名接口,最后再根据该别名接口为蓝本在读写区创建出其镜像副本。
74.如图5所示,在本优选实施例中,步骤400具体包括如下步骤。
75.步骤401:根据映射关系表重定向镜像副本的接口别名到对应的接口真名。
76.步骤402:gdbus对象接口引用该镜像副本重定向后的接口副本以替换掉原有蓝本。
77.步骤403:完成gdbus对象接口的动态自适应。
78.在上述步骤400中,基于在步骤300中创建出的位于读写区的别名接口的镜像副本,步骤400先根据三元映射关系表中接口别名与接口真名的对应关系,将镜像副本的接口别名重定向到对应的接口真名,如此一来,原本属于别名接口的镜像副本便被重定向成了真名接口的接口副本,gdbus对象接口引用该真名接口的接口副本替换掉原有的别名接口的镜像副本,便可完成接口的匹配回归,即完成gdbus对象接口的动态自适应。
79.在本优选实施例中,上述的软件镜像为二进制软件镜像。
80.通过本实施例可以看出,本发明可以使gdbus的同一个接口因硬件或其它条件差异而有不同时,不再需要针对差异适配多个差异个数的软件镜像,而是能在统一的软件镜像中进行动态自适应匹配,不必再为不同的硬件设备生成不同的二进制软件镜像,做到镜像归一,显著降低了版本管理、源码分枝管理以及同步的成本,极大的提高了软件镜像对硬件设备的通配率。
81.实施例2:
82.基于实施例1提供的gdbus对象接口的动态自适应方法,本实施例2通过a,b,c三个设备的统一镜像在b设备上的运行过程来进行举例说明,以使本发明的方法更清楚完整。
83.如图6所示,图6为上述例子中gdbus对象接口自适应到适合b设备接口的接口数据图示。
84.在本优选实施例中,设备a、设备b、设备c为三款存在硬件差异的硬件设备,其名(该名为接口真名)为com.fiberhome.hello的接口(该接口为真名接口),其内容也皆存在差异。
85.其中,在本优选实施例中,硬件设备a的接口描述xml文件定义为ia,且ia对接口com.fiberhome.hello的描述如下:
[0086][0087]
下面通过分别描述现有技术以及本发明技术的处理方式来形成直观对比,以便于理解本发明技术方案。
[0088]
在现有技术中,针对这三款硬件设备a、b、c,首先必然对应需要三个接口描述xml文件:ia、ib、ic。然后再由gdbus的代码生成工具gdbus

codegen根据接口描述xml文件:ia、ib、ic分别生成对应指定语言接口的源文件:ia

、ib

、ic

。再由程序编译器编译生成对应的三个二进制软件并分别打包成镜像系统:a.image、b.image、c.image。
[0089]
其中,a.image固定运行在硬件设备a的环境上,b.image固定运行在硬件设备b的环境上,c.image固定运行在硬件设备c的环境上。
[0090]
而对于本发明,如图6所示,首先针对这三款硬件设备a、b、c统一制作一张三元映射关系表:差异表征
‑‑
接口别名
‑‑
接口真名,具体如下:
[0091]
硬件a差异表征
‑‑
com.fiberhome.hello.a
‑‑
com.fiberhome.hello
[0092]
硬件b差异表征
‑‑
com.fiberhome.hello.b
‑‑
com.fiberhome.hello
[0093]
硬件c差异表征
‑‑
com.fiberhome.hello.c
‑‑
com.fiberhome.hello
[0094]
然后按三元映射关系表的接口别名以及三个接口描述xml文件:ia、ib、ic来制作出一个统一的接口描述xml文件i

abc。具体的,i

abc如下:
[0095]
<interface name="com.fiberhome.hello.a">
[0096]
content:a
[0097]
</interface>
[0098]
<interface name="com.fiberhome.hello.b">
[0099]
content:b
[0100]
</interface>
[0101]
<interface name="com.fiberhome.hello.c">
[0102]
content:c
[0103]
</interface>
[0104]
接着由gdbus的代码生成工具gdbus

codegen根据统一的接口描述xml文件:i

abc生成对应指定语言接口的源文件:i

abc

。再由这个源文件:i

abc

、系统工程源文件以及三元映射关系表,一起编译打包生成一个统一的二进制软件镜像系统abc.image。abc.image这一个镜像系统运行于硬件设备a、b、c的环境上。
[0105]
在运行时,由系统工程根据差异表征,查询三元映射关系表,获取对应关系。因gdbus技术规则,二进制软件镜像其接口数据位于只读区(对接口数据只有读权限而无改写权限,此为gdbus的一种保护技术,根本目的是保护接口一旦生成则不允许变更,该技术也是对现有实现方案的一种强化,反之则制约了灵活性,或者说gdbus该技术规则只考虑了现有实现方案,而未考虑到类似本发明的改良方案)。
[0106]
获取对应关系后,从三元映射关系表由差异表征值找到对应的接口别名。有接口别名则能获取到别名接口数据(该数据指对应别名接口的接口描述文件),然后通过设计副本技术来解决gdbus的接口保护机制:以该别名接口数据为蓝本(从只读区获取),在可控可读写区创造出其镜像副本。将该别名接口数据在可读写区镜像副本的接口名(即接口别名)由三元映射关系表的关系,重定向到接口真名。用重定向后的该接口镜像副本替换掉原生接口蓝本。
[0107]
至此完成gdbus对象接口的动态自适应。
[0108]
具体的,如图6所示,在已建立映射关系表的情况下,首先根据判决得出设备b的差异表征为b,根据该差异表征查询映射关系表:b
‑‑
com.fiberhome.hello.b
‑‑
com.fiberhome.hello,根据该对应关系可以找到对应的接口别名(也即com.fiberhome.hello.b),根据该接口别名在只读区得到对应的别名接口数据(也即设备b对应的接口描述文件部分,图中上部箭头所指右上角只读区部分),然后在读写区创建出该设备b别名接口的副本,最后根据映射关系表的对应,再在读写区重定向到对应的接口真名(也即com.fiberhome.hello),重定向后的接口副本便相当于真名接口的接口副本,自此完成接口的匹配回归。(图6中,位于上方右侧只读区的是各个别名接口的描述文件,位于下方右侧只读区的是真名接口的描述文件,而位于上方左侧读写区的是设备b对应的别名接口的镜像副本,位于下方左侧读写区的是重定向到真名接口后的接口副本。)
[0109]
通过上述具体例子的描述,可以看出本实施例相对于现有技术而言,使gdbus的同一个接口因硬件设备a、b、c之间有不同差异时,不再需要针对设备a、b、c之间的差异分别配置软件镜像,而是能在统一的软件镜像中进行动态自适应匹配,做到镜像归一,显著降低了版本管理、源码分枝管理以及同步的成本,极大的提高了软件镜像对硬件设备的通配率。
[0110]
实施例3:
[0111]
基于实施例1与实施例2提供的gdbus对象接口的动态自适应方法,本实施例3提供与实施例1、实施例2对应的一种gdbus对象接口的动态自适应系统,如图7所示,该系统包括统一接口描述文件生成模块、统一软件镜像生成模块、镜像副本创建模块以及镜像副本重定向模块。
[0112]
在本优选实施例中,上述的统一接口描述文件生成模块用于建立关于不同接口的接口别名、接口真名以及差异表征的映射关系表,并制作出统一的接口描述文件。具体的,
统一接口描述文件生成模块可以包括接口别名命名模块、三元映射关系表创建模块以及接口描述文件制作模块。其中,所述接口别名命名模块用于将存在差异的不同接口分别命名一个接口别名;所述三元映射关系表创建模块用于创建关于差异表征

接口别名

接口真名的三元映射关系表;所述接口描述文件制作模块用于根据不同接口的接口别名以及接口描述文件归并制作出统一的接口描述文件。
[0113]
在本优选实施例中,上述的统一软件镜像生成模块用于根据统一的接口描述文件生成接口源文件,并由接口源文件、系统工程源文件以及映射关系表编译打包生成统一的软件镜像。具体的,统一软件镜像生成模块可以包括接口源文件生成模块以及编译模块。其中,所述接口源文件生成模块通过使用代码生成工具并根据统一的接口描述文件生成对应指定语言接口的接口源文件;所述编译模块包括编译器,在接口源文件生成后获取接口源文件、系统工程源文件以及映射关系表并进行编译打包,最后编译打包出统一的软件镜像。
[0114]
在本优选实施例中,上述的镜像副本创建模块用于在软件镜像运行时根据不同接口的差异表征在映射关系表中匹配到对应的接口别名,根据接口别名对应的别名接口创建出其镜像副本。具体的,镜像副本创建模块可以包括差异表征判决模块、接口别名对应模块以及别名接口副本创建模块。其中,所述差异表征判决模块用于在软件镜像运行时根据接口的不同判决出差异表征;所述接口别名对应模块通过差异表征查询映射关系表以得到相对应的接口别名;所述别名接口副本创建模块由接口别名获得相对应的别名接口,以该别名接口为蓝本创建出其镜像副本。
[0115]
在本优选实施例中,上述的镜像副本重定向模块用于根据映射关系表重定向镜像副本的接口别名到对应的接口真名,引用重定向后的接口副本为gdbus对象接口,完成gdbus对象接口的动态自适应。具体的,镜像副本重定向模块可以包括接口真名重定向模块以及接口副本替换模块。其中,所述接口真名重定向模块用于根据映射关系表重定向镜像副本的接口别名到对应的接口真名;所述接口副本替换模块用于使gdbus对象接口引用上述镜像副本重定向后的接口副本以替换掉原有蓝本,从而完成gdbus对象接口的动态自适应。
[0116]
实施例4:
[0117]
在上述实施例1至实施例3提供的gdbus对象接口的动态自适应方法与系统的基础上,本发明还提供了一种可用于实现上述方法及系统的gdbus对象接口的动态自适应装置,如图8所示,是本发明实施例的装置架构示意图。本实施例的gdbus对象接口的动态自适应装置包括一个或多个处理器21以及存储器22。其中,图8中以一个处理器21为例。
[0118]
处理器21和存储器22可以通过总线或者其他方式连接,图8中以通过总线连接为例。
[0119]
存储器22作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如实施例1至实施例3中的gdbus对象接口的动态自适应方法、系统。处理器21通过运行存储在存储器22中的非易失性软件程序、指令以及模块,从而执行gdbus对象接口的动态自适应装置的各种功能应用以及数据处理,即实现实施例1至实施例3的gdbus对象接口的动态自适应方法及系统。
[0120]
存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器22
可选包括相对于处理器21远程设置的存储器,这些远程存储器可以通过网络连接至处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
[0121]
程序指令/模块存储在存储器22中,当被一个或者多个处理器21执行时,执行上述实施例1至实施例2中的gdbus对象接口的动态自适应方法、系统,例如,执行以上描述的图1和图7所示的各个步骤及模块。
[0122]
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(read only memory,简写为:rom)、随机存取存储器(random access memory,简写为:ram)、磁盘或光盘等。
[0123]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献