本发明属于计算机领域,尤其涉及一种基于动态库加载实现设备自动适配方法以及系统。
背景技术:
1、设备在接入服务器的过程中,目前是通过调用静态库的方式实现设备自动适配,库被打包到可执行程序中,静态库的代码在编译过程中已经被载入可执行程序,因此占用内存较大。
技术实现思路
1、本发明实施例的目的在于提供一种基于动态库加载实现设备自动适配方法以及系统,旨在解决上述背景技术中提出的问题。
2、本发明实施例是这样实现的,一方面,一种基于动态库加载实现设备自动适配方法,所述方法包括以下步骤:
3、识别目标进程的进程使用时长和库调取数量,当进程使用时长和库调取频率分别达到对应的预设使用参数时,执行第一动态库加载方式,否则,执行第二动态库加载方式;
4、所述执行第一动态库加载方式包括:根据平台下发的动态库升级命令生成http请求,根据http请求下载动态库文件;
5、所述执行第二动态库加载方式包括:获取接入的新设备的心跳信息,所述心跳信息包括至少两个同类的新设备的集成心跳信息,根据接入的新设备的心跳信息调取库代码,根据库代码动态加载so文件,加载完毕后通过dlfree的方式释放库代码占用的内存。
6、作为本发明的进一步方案,所述预设使用参数分别包括预设使用时长和预设频率。
7、作为本发明的再进一步方案,所述执行第一动态库加载方式具体包括:
8、监听平台主动下发的动态库升级命令,获取编译所对应的动态链接库;
9、根据获取的动态链接库和预接入设备标识集生成http请求;
10、向平台发送http请求,以下载动态库文件。
11、作为本发明的又进一步方案,所述执行第一动态库加载方式具体还包括:
12、安装以及运行动态库文件,并在安装成功后将安装成功的消息通知到平台,否则,执行安装失败的消息回滚。
13、作为本发明的进一步方案,所述执行第二动态库加载方式具体包括:
14、拉取心跳包,以检测是否存在新设备请求接入;
15、当存在新设备请求接入时,检测本地是否存在与新设备相匹配的驱动包;
16、若否,则通过dlopen和dlfree的方式拉取相匹配的驱动包,根据相匹配的驱动包加载so文件;
17、若是,则直接根据相匹配的驱动包加载so文件。
18、作为本发明的进一步方案,在根据库代码动态加载so文件之后,所述方法还包括:
19、根据so文件获取设备文件,将包括设备文件信息的列表信息发送给平台。
20、作为本发明的进一步方案,另一方面,一种基于动态库加载实现设备自动适配系统,所述系统包括:
21、服务器,所述服务器用于识别目标进程的进程使用时长和库调取数量,当进程使用时长和库调取频率分别达到对应的预设使用参数时,根据平台下发的动态库升级命令执行第一动态库加载方式,否则,执行第二动态库加载方式,所述执行第二动态库加载方式包括:获取接入的新设备的心跳信息,所述心跳信息包括至少两个同类的新设备的集成心跳信息;
22、所述服务器包括网关,所述网关用于:根据平台下发的动态库升级命令生成http请求,向平台发送http请求,以下载动态库文件;
23、所述网关还用于:根据接入的新设备的心跳信息调取库代码,根据库代码动态从平台加载so文件,加载完毕后通过dlfree的方式释放库代码占用的内存;
24、平台,用于下发动态库升级命令给服务器,还用于接收网关发送的http请求,以及提供动态库文件和so文件。
25、本发明实施例提供的一种基于动态库加载实现设备自动适配方法以及系统,通过第一动态库加载方式和第二动态库加载方式在不同条件下的使用,从项目管理的角度来说,第一种可以避免频繁重复调用,对于第二种而言,多种设备的同类功能可以封装成一个动态库,每个库是独立的,可以多人同时开发,提高了代码的扩展性、维护性。由此,对于两个同类的新设备而言,通过集成心跳信息,可以实现对库代码动态加载so文件的同步调取,提高调取的效率,由于调取是动态的,因而不会占用系统其他进程太多的必要使用内存,从而可以避免消耗大量宝贵的内存和磁盘空间。
1.一种基于动态库加载实现设备自动适配方法,其特征在于,所述方法包括:
2.根据权利要求1所述的基于动态库加载实现设备自动适配方法,其特征在于,所述预设使用参数分别包括预设使用时长和预设频率。
3.根据权利要求1所述的基于动态库加载实现设备自动适配方法,其特征在于,所述执行第一动态库加载方式具体包括:
4.根据权利要求1或3所述的基于动态库加载实现设备自动适配方法,其特征在于,所述执行第一动态库加载方式具体还包括:
5.根据权利要求1所述的基于动态库加载实现设备自动适配方法,其特征在于,所述执行第二动态库加载方式具体包括:
6.根据权利要求1或2或3所述的基于动态库加载实现设备自动适配方法,其特征在于,在根据库代码动态加载so文件之后,所述方法还包括:
7.一种基于动态库加载实现设备自动适配系统,其特征在于,所述系统包括: