一种基于插件的数据模型动态加载的方法技术

技术编号:9990901 阅读:73 留言:0更新日期:2014-05-02 04:07
一种基于插件的数据模型动态加载的方法,首先定义数据模型节点的描述结构,然后将数据模型节点编译成动态库,当TR098服务进程检测到新插件时,加载新插件,外部进程对步骤S3中加载的数据节点进行添加,修改,删除,读取操作时,由TR069服务进程负责执行添加,修改,删除,读取节点实例,并调用对应的回调函数执行具体的功能。本发明专利技术将数据模型的描述和TR098服务进程分离,将数据模型的描述编译成动态库,以插件的形式存在,在TR098服务进程中动态加载插件,从而实现系统的高度可扩展性和维护性。

【技术实现步骤摘要】
【专利摘要】,首先定义数据模型节点的描述结构,然后将数据模型节点编译成动态库,当TR098服务进程检测到新插件时,加载新插件,外部进程对步骤S3中加载的数据节点进行添加,修改,删除,读取操作时,由TR069服务进程负责执行添加,修改,删除,读取节点实例,并调用对应的回调函数执行具体的功能。本专利技术将数据模型的描述和TR098服务进程分离,将数据模型的描述编译成动态库,以插件的形式存在,在TR098服务进程中动态加载插件,从而实现系统的高度可扩展性和维护性。【专利说明】
本专利技术涉及,尤其涉及一种基于插件的TR098协议中数据模型动态加载的方法。
技术介绍
CWMP (CPE WAN Management Protocol,CPE 广域网管理协议)是由 DSL (DigitalSubscriber's Line,数字用户线路)论坛发起开发的技术规范之一,编号为TR-069,所以又被称为TR-069协议。它提供了对下一代网络中家庭网络设备进行管理配置的通用框架、消息规范、管理方法和数据模型。目前市场上对于TR069数据模型的管理方式大部分都是预先定义数据模型节点的描述文件,然后将数据模型节点描述文件编译进TR069服务进程。这种方式的实现比较简单,但如果以后需要增加新的数据模型节点,则必须重新编译整个TR098服务进程,对于网络设备来说,就可能需要升级设备的软件,这就增加了维护成本,不容易扩展。
技术实现思路
本专利技术提供,将数据模型的描述编译成动态库,在TR098服务进程中动态加载插件,实现了系统的高度可扩展性和维护性。为了达到上述目的,本专利技术提供,该方法包含以下步骤: 步骤S1、定义数据模型节点的描述结构; 所述的数据模型节点的描述结构包含节点路径,节点名称,节点属性,节点参数,节点的回调函数; 步骤S2、将步骤SI中的数据模型节点编译成动态库,等待加载; 步骤S3、TR098服务进程检测新插件,加载新插件; 步骤S4、外部进程对步骤S3中加载的数据节点进行添加,修改,删除,读取操作时,由TR069服务进程负责执行添加,修改,删除,读取节点实例,并调用对应的回调函数执行具体的功能。所述的步骤SI中,所述的回调函数包含: load Handle:当该节点插件被加载时,执行的回调函数; unload Handle:当该节点插件卸载时候,执行的回调函数; add Handle:添加该节点实例时,执行的回调函数; edit Handle:编辑该节点实例时,执行的回调函数; read Handle:读取该节点实例时,执行的回调函数; delete Handle:删除该节点实例时,执行的回调函数。所述的数据模型节点的参数描述数组param List包含如下参数: 参数名称; 参数属性标志; 参数类型; 参数的默认值,如果参数没有显示设置,那么参数的值为默认值。只有数据模型被实例化时才会调用的回调函数包含以下函数: add Handle:当节点被创建时,调用该函数,在该函数中执行初始化; edit Handle:当节点被编辑时,调用该函数,该函数是节点功能生效的主要函数,当节点的参数值改变后会调用该函数,在该函数中根据参数值执行具体的功能; read Handle:当节点被读取时,调用该函数来更新参数值,对于一些状态相关的节点尤其需要; delete Handle:当一个节点被删除时,调用该函数。本专利技术将数据模型的描述和TR098服务进程分离,将数据模型的描述编译成动态库,以插件的形式存在,在TR098服务进程中动态加载插件,从而实现系统的高度可扩展性和维护性。【专利附图】【附图说明】图1是本专利技术的流程图。【具体实施方式】以下根据图1具体说明本专利技术的较佳实施例。如图1所示,本专利技术提供,该方法包含以下步骤: 步骤1、定义数据模型节点的参数描述数组; 所述的节点参数描述数组为param List,该数组中参数的个数为param Num ; 所述的数据模型节点的参数描述数组包含如下参数: name:参数名称; flag:参数属性标志; type:参数类型; default Vaule:参数的默认值,如果参数没有显示设置,那么参数的值为默认值; 步骤2、编写节点的回调函数; 插件被加载后,并不会调用步骤2中编写的回调函数,只有数据模型被实例化时才会调用步骤2中的回调函数; 所述的回调函数包含以下函数: add Handle:当节点被创建时,调用该函数,在该函数中执行初始化;edit Handle:当节点被编辑时,调用该函数,该函数是节点功能生效的主要函数,当节点的参数值改变后会调用该函数,在该函数中根据参数值执行具体的功能; read Handle:当节点被读取时,调用该函数来更新参数值,对于一些状态相关的节点尤其需要; delete Handle:当一个节点被删除时,调用该函数; 步骤3、定义数据模型节点的描述结构; 所述的数据模型节点的描述结构包含节点路径,节点名称,节点属性,节点参数,节点的回调函数,具体如下: path:描述了节点的路径; name:描述了节点的名称; flag:描述了节点的属性,例如读写属性等; param List:即为步骤I中定义的节点参数描述数组; param Num:是步骤I中节点参数的个数; load Handle:当该节点插件被加载时,执行的回调函数; unload Handle:当该节点插件卸载时候,执行的回调函数; add Handle:添加该节点实例时,执行的回调函数,即步骤2中对应的回调函数; edit Handle:编辑该节点实例时,执行的回调函数,即步骤2中对应的回调函数; read Handle:读取该节点实例时,执行的回调函数,即步骤2中对应的回调函数; delete Handle:删除该节点实例时,执行的回调函数,即步骤2中对应的回调函数; 一个文件中可以定义多个节点的描述信息,将步骤3中定义的所有节点的节点描述 结构信息存放到一个数组中,名称为Object Notes Desc,该数组中的节点个数为Object Notes Num ; 步骤4、将步骤3中的数据模型节点编译成动态库,等待加载; 步骤5、TR098服务进程检测新插件,加载新插件; 由于插件以动态库形式存在,可以调用相应的接口函数加载插件; 例如Iinux中调用dlopen函数(Linux的库函数,打开一个动态库)加载插件,然后根据返回的句柄调用dlsym函数(Linux的库函数,获取动态库中某个符号的地址)获取名称为Object Notes Desc的节点描述数组,获取该数组中描述的节点和参数信息后,便可以加载这些信息; 步骤6、外部进程对步骤5中加载的数据节点进行添加,修改,删除,读取等操作时,由TR069服务进程负责执行添加,修改,删除,读取节点等实例,并调用对应的回调函数执行具体的功能。本专利技术将数据模型的描述和TR098服务进程分离,将数据模型的描述编译成动态库,以插件的形式存在,在TR098服务进程中动态加载插件,从而实现系统的高度可扩展性和维护性。尽管本专利技术的内容已经通过上本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:匡昌胜
申请(专利权)人:上海斐讯数据通信技术有限公司
类型:发明
国别省市:

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

1