【技术实现步骤摘要】
远程过程调用框架的代码生成方法、装置和系统
[0001]本公开涉及计算机程序数据领域,尤其是一种远程过程调用框架的代码生成方法
、
装置和系统
。
技术介绍
[0002]程序设计语言
C++
的序列化库通常用做取代远程过程调用
(Remote Procedure Call
,
RPC)
中的
protobuf
的序列化库
。
其中,
protobuf
为混合语言数据标准
。
[0003]C++
序列化库在作为
RPC
的数据交换标准时,通常使用接口类和数据结构定义文件作为
C++
数据序列化的编码依据,人工编码实现接口的数据序列化代码
。
对于复杂
、
反复迭代的系统,序列化代码的开发工作量和维护工作量巨大
。
技术实现思路
[0004]本公开实施例提供一种远程过程调用框架的代码生成方法
...
【技术保护点】
【技术特征摘要】
1.
一种远程过程调用框架的代码生成方法,包括:将目标程序设计语言的目标接口和所述目标接口依赖的数据结构确定为数据源;解析所述数据源,得到所述数据源的接口函数信息和所述数据结构,并为所述数据结构添加序列化函数,其中,所述接口函数信息包括函数名称
、
入参信息和返回值信息;基于所述接口函数信息,对所述目标接口生成序列化代码和反序列化代码,将所述目标接口注册到回调映射表中,并生成提供远程过程调用框架调用所述回调映射表的调用接口
。2.
根据权利要求1所述的方法,其中,所述入参信息包括入参类型;所述为所述数据结构添加序列化函数,包括:响应于所述入参类型为递归类型,为所述数据结构按照递归的方式添加序列化函数
。3.
根据权利要求1或2所述的方法,其中,所述基于所述接口函数信息,对所述目标接口生成序列化代码和反序列化代码,包括:基于所述接口函数信息,为每个接口函数生成第一类型终端的类名称
、
函数声明和入参列表,其中,所述函数声明的入参为第一序列化对象;基于所述第一序列化对象对所述第一类型终端的入参列表中的每个参数进行反序列化赋值,得到所述第一类型终端赋值后的入参列表,基于所述第一类型终端的入参列表确定所述反序列化代码;利用所述第一类型终端赋值后的入参列表调用所述数据源的接口,对所述数据源的接口的返回值进行序列化得到所述返回值的序列化对象,并将所述返回值的序列化对象返回到所述远程过程调用框架
。4.
根据权利要求3所述的方法,其中,所述基于所述接口函数信息,为每个接口函数生成第一类型终端的类名称
、
函数声明和入参列表,包括:基于所述接口函数信息,为每个接口函数生成所述第一类型终端的类名称;基于每个接口函数的函数名称,为每个接口函数生成第一类型终端的函数声明;基于所述入参信息,生成所述第一类型终端的入参列表
。5.
根据权利要求1或2所述的方法,其中,所述将所述目标接口注册到回调映射表中,包括:将所述目标接口
、
所述函数名称和函数地址添加到所述回调映射表中,并基于所述函数名称确定所述函数地址
。6.
根据权利要求3所述的方法,其中,在所述解析所述数据源,得到所述数据源的接口函数信息和...
【专利技术属性】
技术研发人员:李成,张显成,尹家林,张圆民,常鑫宇,
申请(专利权)人:杭州长川科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。