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

一种LVC-DE分布式合成环境的远程过程调用实现方法与流程

2022-12-06 22:28:05 来源:中国专利 TAG:

一种lvc-de分布式合成环境的远程过程调用实现方法
技术领域
1.本发明涉及分布式通信领域,具体而言,涉及一种lvc-de分布式合成环境的远程过程调用实现方法。


背景技术:

2.lvc-de分布式环境用于将分布在不同区域的、隶属于不同单位的各类真实的sl、虚拟的sv或构造的sc试验资源互联在一起,支持信息共享、资源共用和重用以及系统间的互联互通互操作,并可根据试验任务的要求组合使用各类资源快速构建大规模分布式试验系统。
3.随着lvc-de分布式环境的应用,分布式试验系统大规模、分散控制和动态改变的特点要求各试验参与者之间采用具有动态性和松散耦合特性的灵活通信和交互机制。目前,lvc-de分布式环境采用对象管理组织sobject manage group, omg的数据分发服务sdata distribution service, dds规范,实现了基于发布/订阅spublish/subscribe, p/s的多点数据通信。然而,单一的通信方式并不能满足大规模分布式试验的交互需求,即试验过程中试验资源之间不仅需要发布/订阅式的松耦合通信,也需要请求/应答式的紧耦合通信,如:装备管控过程中对于远程试验装备发送操控指令并等待装备返回状态,此时使用发布/订阅的通信方式不能很好地实现请求/应答语义。远程过程调用sremote procedure call, rpc采用客户机/服务器sclient/server模式实现进程间的同步机制,能够提供请求/应答的通信方式。因此,为了扩展lvc-de分布式环境的应用领域,需要在现有发布/订阅通信机制的基础上,扩展实现请求/应答通信机制,满足试验领域对多种通信方式的需求,因此我们对此做出改进,提出一种lvc-de分布式合成环境的远程过程调用实现方法。


技术实现要素:

4.本发明的目的在于:针对目前存在的背景技术提出的问题,为了实现上述发明目的,本发明提供了以下技术方案:一种lvc-de分布式合成环境的远程过程调用实现方法,包括以下步骤:s1对象模型方法及参数解析,lvc-de分布式合成环境的远程方法调用以tena对象模型中的方法为依据,本发明通过解析“${模块名称}.tdl”tena对象模型描述文件s其示例伪代码获取其中描述远程过程调用的tena对象模型方法及其参数;s2客户端调用对象实例方法,客户端使用lvc-de分布式合成环境中间件invokeobjectinstancemethod函数完成对对象实例方法的调用,以启动远程过程调用;s3服务端对象实例方法回调,在服务端通过dds主题接收到方法调用通知时,lvc-de分布式合成环境中间件使用objectinstancemethodcallback函数向上层应用传递对象实例方法调用,以完成远程过程调用;s4远程过程调用的数据结构,在lvc-de分布式合成环境实现远程过程调用过程中,客户端和服务端之间使用dds主题传递方法调用及返回值;s5接口设计,客户端使用调用对象实例方法函数,将一个其想要调用某个对象实
例某个方法的消息推送给lvc-de分布式合成环境中间件。中间件将远程方法调用信息提供给服务端。
5.作为本发明优选的技术方案,s1对象模型方法及参数解析,s1-1选择tena对象模型描述文件,保存该对象模型描述文件路径地址;s1-2按照路径地址打开tena对象模型描述文件,读取文件全部内容;s1-3按照行对tena对象模型描述文件每行的结构标识进行判断;s1-4-1如果结构标识为局部类、类、消息等类型,转至步骤s1-5;s1-4-2如果结构标识为枚举类型,保存枚举名称和枚举内容,存储在数据结构内,转至步骤s1-3;s1-4-3如果结构标识为结束符,转至步骤s1-7;s1-5在类/局部类/消息结构处理分支内,对结构内每行内容的类型标识进行判断;s1-6-1如果内容标识为数据,将数据的类型和名称存储在数据结构内,转至步骤s1-5;s1-6-2如果内容标识为方法,将方法返回类型、名称、参数输入输出类型、参数数据类型、参数名称、错误值类型和错误值名称存储在数据结构内,转至步骤s1-5;s1-6-3如果内容标识为结束符,转至步骤s1-3;s1-7按照继承、聚合关系对数据结构重新梳理形成tena对象模型列表。
6.作为本发明优选的技术方案,s2客户端调用对象实例方法,包括以下步骤:s2-1输入参数输入对象实例id、对象实例方法名称和方法输入参数的名称与当前值;s2-2判断对象实例是否存在,存在执行s2-3-1,不存在执行s2-3-2;s2-3-1判断对象实例是否存在调用的方法名称,存在执行s2-4-1,不存在执行s2-4-2;s2-3-2对象实例不存在,抛出异常;s2-4-1通过dds主题向对象实例所在的服务端发送方法调用通知,通知内容包含对象实例id、对象实例方法名称、方法输入参数的名称与当前值和方法调用模式;s2-4-2对象实例不存在该方法名称,抛出异常;s2-5等待反馈信息,收到反馈信号执行s2-6-1,超过10s未收到反馈信号执行s2-6-2;s2-6-1输出方法输出参数名称与当前值对集合、输出方法返回值、输出异常参数名称与当前值对集合,完成对该实例方法的调用;s2-6-2方法调用超时,抛出异常。
7.作为本发明优选的技术方案,s3服务端对象实例方法回调,s3-1lvc-de分布式合成环境中间件通过dds主题收到方法调用通知;s3-2解析dds主题中的方法调用通知内容,得到以下对象实例方法调用信息:对象实例id、对象实例方法名称、方法输入参数的名称与当前值和方法调用模式;s3-3判断方法调用模式,若是单项模式执行步骤(3-4-1),若是正常模式执行步骤(3-4-2);
s3-4-1调用服务端方法实现接口函数objectinstancemethodcallback()向上层应用传递对象实例方法调用,转至步骤s3-5;s3-4-2调用服务端方法实现接口函数objectinstancemethodcallback()向上层应用传递对象实例方法调用,转至步骤s3-6;s3-5无需等待接口函数执行完成,通过dds主题向发起本次方法调用的客户端反馈对象实例方法回调完成;s3-6等待接口函数执行完成后,通过dds主题向发起本次方法调用的客户端反馈本次对象实例方法回调完成,输出方法返回值、方法输出参数名称与当前值对集合和异常参数名称与当前值集合。
8.作为本发明优选的技术方案,s5接口设计,提供的参数:s5a-1对象实例id;s5a-2对象实例方法名称;s5a-3方法输入参数名称与当前值对集合;返回的变量:s5b-1方法输出参数名称与当前值对集合;s5b-2方法返回值;s5b-3异常参数名称与当前值对结合;前置条件:s5c-1任务系统已存在后置条件:无。
9.作为本发明优选的技术方案,s5接口设计,提供的参数:异常:s5d-1客户端未加入任务系统;s5d-2对象实例不存在;s5d-3客户端未订购对象实例;s5d-4方法未在对象类中定义;s5d-5无效的方法参数;s5d-6中间件内部错误。
10.作为本发明优选的技术方案,s5接口设计,对象实例方法回调,所述对象实例方法回调函数由lvc-de分布式合成环境中间件主动调用,用于向服务端提供来自其它客户端的一个调用指令;提供的参数:s5e-1对象实例id;s5e-2对象实例方法名称;s5e-3方法输入参数名称与当前值对集合;s5e-4方法oneway类型;s5e-5时间戳。
11.作为本发明优选的技术方案,s5接口设计,对象实例方法回调:返回的变量:
s5f-1方法输出参数名称与当前值对集合;s5f-2方法返回值;s5f-3异常参数名称与当前值对结合。
12.作为本发明优选的技术方案,s5接口设计,对象实例方法回调:前置条件:s5g-1任务系统已存在;s5g-2服务端已加入任务系统;s5g-3对象实例已存在;s5g-4方法在对象类中定义。
13.作为本发明优选的技术方案,s5接口设计,对象实例方法回调:后置条件:无异常:s5h-1服务端内部错误。
14.与现有技术相比,本发明的有益效果:在本发明的方案中:通过远程过程调用实现加法运,客户端程序发送计算加法的操作和两个加数,服务端接收到该远程过程调用通知并在本地计算两个加数的相加结果返回给客户端程序,客户端程序接收到计算结果。远程方法调用实现获取速度:客户端程序调用者发送获取速度的操作,服务端接收到该远程过程调用并在本地获取到速度值返回给客户端程序,客户端程序接收到速度值。因此本发明提出的lvc-de分布式合成环境远程过程调用机制能够实现客户端和服务器之间请求应答通信机制。
15.附图说明:图1为本发明提供的解析dds对象模型文件过程基本流程图;图2为本发明提供的客户端调用对象实例方法流程图;图3为本发明提供的服务端对象实例方法回调流程图;图4为本发明提供的远程过程调用dds主题的内容;图5为本发明提供的加法运算调用实现结果图。
具体实施方式
16.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本发明实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例是本发明的一种具体实施方式,不限于全部的实施例。
17.因此,以下对本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的部分实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
18.需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征和技术方案可以相互组合,应注意到,相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
19.实施例:请参阅图1-5,一种lvc-de分布式合成环境的远程过程调用实现方法,包括一种lvc-de分布式合成环境的远程过程调用实现方法,包括以下步骤:s1对象模型方法及参数解析,lvc-de分布式合成环境的远程方法调用以tena对象模型中的方法为依据,本发明通过解析“${模块名称}.tdl”tena对象模型描述文件s其示例伪代码获取其中描述远
程过程调用的tena对象模型方法及其参数;s2客户端调用对象实例方法,客户端使用lvc-de分布式合成环境中间件invokeobjectinstancemethod函数完成对对象实例方法的调用,以启动远程过程调用;s3服务端对象实例方法回调,在服务端通过dds主题接收到方法调用通知时,lvc-de分布式合成环境中间件使用objectinstancemethodcallback函数向上层应用传递对象实例方法调用,以完成远程过程调用;s4远程过程调用的数据结构,在lvc-de分布式合成环境实现远程过程调用过程中,客户端和服务端之间使用dds主题传递方法调用及返回值;s5接口设计,客户端使用调用对象实例方法函数,将一个其想要调用某个对象实例某个方法的消息推送给lvc-de分布式合成环境中间件。中间件将远程方法调用信息提供给服务端。
20.s1对象模型方法及参数解析,s1-1选择tena对象模型描述文件,保存该对象模型描述文件路径地址;s1-2按照路径地址打开tena对象模型描述文件,读取文件全部内容;s1-3按照行对tena对象模型描述文件每行的结构标识进行判断;s1-4-1如果结构标识为局部类、类、消息等类型,转至步骤s1-5;s1-4-2如果结构标识为枚举类型,保存枚举名称和枚举内容,存储在数据结构内,转至步骤s1-3;s1-4-3如果结构标识为结束符,转至步骤s1-7;s1-5在类/局部类/消息结构处理分支内,对结构内每行内容的类型标识进行判断;s1-6-1如果内容标识为数据,将数据的类型和名称存储在数据结构内,转至步骤s1-5;s1-6-2如果内容标识为方法,将方法返回类型、名称、参数输入输出类型、参数数据类型、参数名称、错误值类型和错误值名称存储在数据结构内,转至步骤s1-5;s1-6-3如果内容标识为结束符,转至步骤s1-3;s1-7按照继承、聚合关系对数据结构重新梳理形成tena对象模型列表。
21.所述“${模块名称}.tdl”文件定义格式,package modulename{
ꢀꢀꢀꢀꢀꢀ
class interfacename
ꢀꢀꢀꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀ
float func(out float param);
ꢀꢀꢀꢀꢀꢀꢀꢀ
float func(in float param, in float param, out float param);
ꢀꢀꢀꢀꢀꢀꢀ
};
ꢀꢀꢀꢀ
};s2客户端调用对象实例方法,包括以下步骤:s2-1输入参数输入对象实例id、对象实例方法名称和方法输入参数的名称与当前值;s2-2判断对象实例是否存在,存在执行s2-3-1,不存在执行s2-3-2;
s2-3-1判断对象实例是否存在调用的方法名称,存在执行s2-4-1,不存在执行s2-4-2;s2-3-2对象实例不存在,抛出异常;s2-4-1通过dds主题向对象实例所在的服务端发送方法调用通知,通知内容包含对象实例id、对象实例方法名称、方法输入参数的名称与当前值和方法调用模式;s2-4-2对象实例不存在该方法名称,抛出异常;s2-5等待反馈信息,收到反馈信号执行s2-6-1,超过10s未收到反馈信号执行s2-6-2;s2-6-1输出方法输出参数名称与当前值对集合、输出方法返回值、输出异常参数名称与当前值对集合,完成对该实例方法的调用;s2-6-2方法调用超时,抛出异常。
22.s3服务端对象实例方法回调,s3-1lvc-de分布式合成环境中间件通过dds主题收到方法调用通知;s3-2解析dds主题中的方法调用通知内容,得到以下对象实例方法调用信息:对象实例id、对象实例方法名称、方法输入参数的名称与当前值和方法调用模式;s3-3判断方法调用模式,若是单项模式执行步骤(3-4-1),若是正常模式执行步骤(3-4-2);s3-4-1调用服务端方法实现接口函数objectinstancemethodcallback()向上层应用传递对象实例方法调用,转至步骤s3-5;s3-4-2调用服务端方法实现接口函数objectinstancemethodcallback()向上层应用传递对象实例方法调用,转至步骤s3-6;s3-5无需等待接口函数执行完成,通过dds主题向发起本次方法调用的客户端反馈对象实例方法回调完成;s3-6等待接口函数执行完成后,通过dds主题向发起本次方法调用的客户端反馈本次对象实例方法回调完成,输出方法返回值、方法输出参数名称与当前值对集合和异常参数名称与当前值集合。
23.s5接口设计,提供的参数:s5a-1对象实例id;s5a-2对象实例方法名称;s5a-3方法输入参数名称与当前值对集合;返回的变量:s5b-1方法输出参数名称与当前值对集合;s5b-2方法返回值;s5b-3异常参数名称与当前值对结合;前置条件:s5c-1任务系统已存在后置条件:无。
24.s5接口设计,提供的参数:异常:s5d-1客户端未加入任务系统;
s5d-2对象实例不存在;s5d-3客户端未订购对象实例;s5d-4方法未在对象类中定义;s5d-5无效的方法参数;s5d-6中间件内部错误。
25.s5接口设计,对象实例方法回调,所述对象实例方法回调函数由lvc-de分布式合成环境中间件主动调用,用于向服务端提供来自其它客户端的一个调用指令;提供的参数:s5e-1对象实例id;s5e-2对象实例方法名称;s5e-3方法输入参数名称与当前值对集合;s5e-4方法oneway类型;s5e-5时间戳。
26.s5接口设计,对象实例方法回调:返回的变量:s5f-1方法输出参数名称与当前值对集合;s5f-2方法返回值;s5f-3异常参数名称与当前值对结合。
27.s5接口设计,对象实例方法回调:前置条件:s5g-1任务系统已存在;s5g-2服务端已加入任务系统;s5g-3对象实例已存在;s5g-4方法在对象类中定义。
28.s5接口设计,对象实例方法回调:后置条件:无异常:s5h-1服务端内部错误。
29.工作原理:本发明在使用的过程中,s1对象模型方法及参数解析,lvc-de分布式合成环境的远程方法调用以tena对象模型中的方法为依据,本发明通过解析“${模块名称}.tdl”tena对象模型描述文件s其示例伪代码获取其中描述远程过程调用的tena对象模型方法及其参数;s2客户端调用对象实例方法,客户端使用lvc-de分布式合成环境中间件invokeobjectinstancemethod函数完成对对象实例方法的调用,以启动远程过程调用;s3服务端对象实例方法回调,在服务端通过dds主题接收到方法调用通知时,lvc-de分布式合成环境中间件使用objectinstancemethodcallback函数向上层应用传递对象实例方法调用,以完成远程过程调用;s4远程过程调用的数据结构,在lvc-de分布式合成环境实现远程过程调用过程中,客户端和服务端之间使用dds主题传递方法调用及返回值;s5接口设计,客户端使用调用对象实例方法函数,将一个其想要调用某个对象实例某个方法的消息推送给lvc-de分布式合成环境中间件。中间件将远程方法调用信息提供给服务端。s1对象模型方法及参数解析,s1-1选择tena对象模型描述文件,保存该对象模型描述文件路径地址;s1-2按照路径地址打开tena对象模型描述文件,读取文件全部内容;s1-3按照行对tena对
象模型描述文件每行的结构标识进行判断;s1-4-1如果结构标识为局部类、类、消息等类型,转至步骤s1-5;s1-4-2如果结构标识为枚举类型,保存枚举名称和枚举内容,存储在数据结构内,转至步骤s1-3;s1-4-3如果结构标识为结束符,转至步骤s1-7;s1-5在类/局部类/消息结构处理分支内,对结构内每行内容的类型标识进行判断;s1-6-1如果内容标识为数据,将数据的类型和名称存储在数据结构内,转至步骤s1-5;s1-6-2如果内容标识为方法,将方法返回类型、名称、参数输入输出类型、参数数据类型、参数名称、错误值类型和错误值名称存储在数据结构内,转至步骤s1-5;s1-6-3如果内容标识为结束符,转至步骤s1-3;s1-7按照继承、聚合关系对数据结构重新梳理形成tena对象模型列表。s2客户端调用对象实例方法,包括以下步骤:s2-1输入参数输入对象实例id、对象实例方法名称和方法输入参数的名称与当前值;s2-2判断对象实例是否存在,存在执行s2-3-1,不存在执行s2-3-2;s2-3-1判断对象实例是否存在调用的方法名称,存在执行s2-4-1,不存在执行s2-4-2;s2-3-2对象实例不存在,抛出异常;s2-4-1通过dds主题向对象实例所在的服务端发送方法调用通知,通知内容包含对象实例id、对象实例方法名称、方法输入参数的名称与当前值和方法调用模式;s2-4-2对象实例不存在该方法名称,抛出异常;s2-5等待反馈信息,收到反馈信号执行s2-6-1,超过10s未收到反馈信号执行s2-6-2;s2-6-1输出方法输出参数名称与当前值对集合、输出方法返回值、输出异常参数名称与当前值对集合,完成对该实例方法的调用;s2-6-2方法调用超时,抛出异常。s3服务端对象实例方法回调,s3-1lvc-de分布式合成环境中间件通过dds主题收到方法调用通知;s3-2解析dds主题中的方法调用通知内容,得到以下对象实例方法调用信息:对象实例id、对象实例方法名称、方法输入参数的名称与当前值和方法调用模式;s3-3判断方法调用模式,若是单项模式执行步骤(3-4-1),若是正常模式执行步骤(3-4-2);s3-4-1调用服务端方法实现接口函数objectinstancemethodcallback()向上层应用传递对象实例方法调用,转至步骤s3-5;s3-4-2调用服务端方法实现接口函数objectinstancemethodcallback()向上层应用传递对象实例方法调用,转至步骤s3-6;s3-5无需等待接口函数执行完成,通过dds主题向发起本次方法调用的客户端反馈对象实例方法回调完成;s3-6等待接口函数执行完成后,通过dds主题向发起本次方法调用的客户端反馈本次对象实例方法回调完成,输出方法返回值、方法输出参数名称与当前值对集合和异常参数名称与当前值集合。s5接口设计,提供的参数:s5a-1对象实例id;s5a-2对象实例方法名称;s5a-3方法输入参数名称与当前值对集合;返回的变量:s5b-1方法输出参数名称与当前值对集合;s5b-2方法返回值;s5b-3异常参数名称与当前值对结合;前置条件:s5c-1任务系统已存在后置条件:无。s5接口设计,提供的参数:异常:s5d-1客户端未加入任务系统;s5d-2对象实例不存在;s5d-3客户端未订购对象实例;s5d-4方法未在对象类中定义;s5d-5无效的方法参数;s5d-6中间件内部错误。s5接口设计,对象实例方法回调,所述对象实例方法回调函数由lvc-de分布式合成环境中间件主动调用,用于向服务端提供来自其它客户端的一个调用指令;提供的参数:s5e-1对象实例id;s5e-2对象实例方法名称;s5e-3方法输入参数名称与当前值对集合;s5e-4方法oneway类型;s5e-5时间戳。s5接口设计,对象实例方法回调:返回的变量:s5f-1方法输出参数名称与当前值对集合;s5f-2方法返回值;s5f-3异常参数名称与当前值对结合。s5接口设计,对象实例方法回调:前置条件:s5g-1任务系统已存在;s5g-2服务端已加入任务系统;s5g-3对象实例已存在;s5g-4方法在对象类中定义。s5接口设计,对象实例方法回调:后置条件:无
异常:s5h-1服务端内部错误。
30.以上实施例仅用以说明本发明而并非限制本发明所描述的技术方案,尽管本说明书参照上述的各个实施例对本发明已进行了详细的说明,但本发明不局限于上述具体实施方式,因此任何对本发明进行修改或等同替换;而一切不脱离发明的精神和范围的技术方案及其改进,其均涵盖在本发明的权利要求范围当中。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献