家庭网关快速访问配置数据的存储访问方法及系统与流程

文档序号:16248150发布日期:2018-12-11 23:46阅读:527来源:国知局
家庭网关快速访问配置数据的存储访问方法及系统与流程

本发明涉及计算机通信技术领域,具体涉及一种家庭网关快速访问配置数据的存储访问方法及访问系统。

背景技术

家庭网关是用户家中的互联网接入设备,用户可以通过它实现互联网接入。随着家庭网关的功能丰富,配置数据日渐庞大,各种协议和应用程序对于配置访问的需求多样,并要求具有一定的实时性。现有技术采用根据tr-098规范定义的xml文件存储配置数据。tr-098定义了tr-069的internet网关设备数据模型,基于xml(extensiblemarkuplanguage,可扩展标记语言)文件进行描述。然而,xml文件一般体积较大,每次需要读写配置时,均需要读写xml文件,访问速度较慢。同时,需要修改配置时,数据修改量大,造成资源浪费。

鉴于以上情况,家庭网关需要一种让各种应用程序能够方便家庭网关快速访问配置数据的存储访问方法。



技术实现要素:

针对现有技术中存在的缺陷,本发明的目的在于提供一种家庭网关快速访问配置数据的存储访问方法及访问系统,实现方便快速访问配置数据。

为达到以上目的,本发明采取的技术方案是:一种家庭网关快速访问配置数据的存储访问方法,包括以下步骤:

s1、将根据tr098规范定义的配置数据转换为xml文件;

s2、解析xml文件中的对象和参数,根据对象的名称、参数的属性和参数的值,生成文件目录树;

s3、应用程序访问所述配置数据时,将待访问配置数据对应的xml文件中参数的全路径转换成文件目录路径;

s4、使用操作系统的文件操作接口,根据文件目录路径访问文件目录树,获得xml文件的对象的属性、参数的属性以及参数的值。

在上述方案的基础上,所述文件目录树的生成规则为:

将xml文件中每个对象分别作为文件目录,对象的下一级对象作为文件目录下的子目录;

将对象的属性和对象下的参数的属性保存在属性文件中;

将参数的值保存在值文件中。

在上述方案的基础上,步骤s4的具体过程为:

使用操作系统的文件操作接口,根据文件目录路径访问xml文件参数所属的对象对应的文件目录;

读取该文件目录下的属性文件,获得xml文件的对象的属性以及参数的属性;

读取该文件目录下的值文件,根据参数的名称,获得xml文件的参数的值。

在上述方案的基础上,步骤s1具体包括以下步骤:将tr098规范指定的参数属性及默认值,转换成xml文件,作为动态实例的0模板;

需要增加动态实例时,将动态实例的0模板对应的文件目录拷贝一份,将拷贝得到的文件目录的名称修改为一个没有使用的实例号;需要删除动态实例时,删除该动态实例对应的文件目录。

在上述方案的基础上,步骤s4中还包括以下步骤:通过对象的属性文件对访问进行加锁,读取配置数据时采用共享锁,写入配置数据时采用互斥锁。

本发明还公开了一种家庭网关快速访问配置数据的存储访问系统,包括:

xml文件转换模块,其用于将根据tr098规范定义的配置数据转换为xml文件;

文件目录树生成模块,其用于解析xml文件中的对象和参数,根据对象的名称、参数的属性和参数的值生成文件目录树;

文件目录路径转换模块,其用于:应用程序访问配置数据时,将待访问配置数据对应的xml文件的参数的全路径转换成文件目录路径;

文件目录树访问模块,其用于使用操作系统的文件操作接口,根据文件目录路径访问文件目录树,获得xml文件的对象的属性、参数的属性以及参数的值。

在上述方案的基础上,所述文件目录树的生成规则为:

将xml文件中每个对象分别作为文件目录,对象的下一级对象作为文件目录下的子目录;

将对象的属性和对象下参数的属性保存在属性文件中;

将参数的值保存在值文件中。

在上述方案的基础上,所述文件目录树访问模块使用操作系统的文件操作接口,根据文件目录路径访问文件目录树,获得xml文件的对象的属性、参数的属性以及参数的值,具体过程为:

使用操作系统的文件操作接口,根据文件目录路径访问xml文件参数所属的对象对应的文件目录;

读取该文件目录下的属性文件,获得xml文件的对象的属性以及参数的属性;

读取该文件目录下的值文件,根据参数的名称,获得xml文件的参数的值。

在上述方案的基础上,所述xml文件转换模块将tr098规范指定的参数的属性及默认值转换成xml文件,作为动态实例的0模板;

所述系统还包括动态实例增删模块,其用于:需要增加动态实例时,将0模板对应的文件目录拷贝一份,将拷贝得到的文件目录的名称修改为一个没有使用的实例号;需要删除动态实例时,删除该动态实例对应的文件目录。

在上述方案的基础上,所述文件目录树访问模块还用于:通过对象的属性文件对访问进行加锁,读取配置数据时采用共享锁,写入配置数据时采用互斥锁。

与现有技术相比,本发明的优点在于:

(1)本发明将xml文件转换为文件目录树的存储结构,文件目录树与xml节点层次完全对应,直观方便,定位迅速;将xml文件的对象的全路径转换成文件目录路径,全路径访问方式非常直观,使用无门槛;访问颗粒度以对象为单位,达到兼顾对象和参数的数据访问需求效率的平衡。

(2)本发明访问颗粒度以对象为单位,达到兼顾对象和参数的数据访问需求效率的平衡。

(3)本发明通过文件目录的增删实现动态实例的增删,动态实例增删方便,利于平滑升级。

(4)通过文件加锁保证同时多个进程访问的同步和互斥,支持多个进程同时访问,提高访问速度。

附图说明

图1为本发明实施例中一种家庭网关快速访问配置数据的存储访问方法的流程示意图;

图2为本发明实施例中一种家庭网关快速访问配置数据的存储访问系统的结构示意图。

具体实施方式

以下结合附图及实施例对本发明作进一步详细说明。

实施例1:

参见图1所示,本发明实施例提供一种家庭网关快速访问配置数据的存储访问方法,包括以下步骤:

s1,将根据tr098规范定义的配置数据转换为xml文件;

s2,解析xml文件中的对象和参数,根据对象的名称、参数的属性和参数的值生成文件目录树;

s3,应用程序需要访问配置数据时,使用api接口将xml文件的对象的全路径转换成文件目录路径;

s4,使用操作系统的文件操作接口,根据文件目录路径访问文件目录树,获得xml文件的对象的属性、参数的属性以及参数的值。

步骤s1具体包括以下过程:

将根据tr098规范定义的配置的对象的名称转换为xml文件的对象的名称;

将根据tr098规范定义的配置的参数的名称转换为xml文件的参数的名称;

将根据tr098规范定义的配置的参数的类型转换为xml文件的参数的属性;

将根据tr098规范定义的配置的参数的值转换为xml文件的参数的值。

步骤s2中所述文件目录树的生成规则为:

将xml文件中每个对象分别作为文件目录,对象的下一级对象作为文件目录下的子目录;

将对象的属性和对象下的参数的属性保存在属性文件中;

将参数的值保存在值文件中。

实施例2:

在实施例1的基础上,步骤s3中应用程序需要访问配置数据时,使用api接口将xml文件的对象的全路径转换成文件目录路径,具体过程为:

api把全路径的‘.’转换为‘/’,形成一个文件目录路径。例如:

转换前:

internetgatewaydevice.wandevice.1.wanconnectiondevice.1.wanipconnection.1.portmapping.

转换后:

internetgatewaydevice/wandevice/1/wanconnectiondevice/1/wanipconnection/1/portmapping/

步骤s4具体过程为:

使用操作系统的文件操作接口,根据文件目录路径访问xml文件参数所属的对象对应的文件目录;

读取该文件目录下的属性文件,获得xml文件的对象的属性以及参数的属性;

读取该文件目录下的值文件,根据参数的名称,获得xml文件的参数的值。

实施例3:

在实施例1的基础上,配置数据为动态实例时,根据tr098规范指定的参数属性及默认值转换成xml文件作为0模板。

需要增加动态实例时,将0模板对应的文件目录拷贝一份,将拷贝得到的文件目录的名称修改为一个没有使用的实例号;需要删除动态实例时,删除该动态实例对应的文件目录。

增加动态实例的具体过程为:

1)根据全路径对应的文件目录路径,使用操作系统的文件操作接口,读取该动态实例所属的对象目录下的属性文件,获取该对象的属性和参数的属性。

2)根据对象的max属性,获知该动态实例的最大实例个数。

3)如果需要增加实例,判断当前实例个数没有超过最大实例个数限制,即可增加。具体增加方法,选择一个没有使用的实例号(文件目录),比如现在已经存在目录1,那么可以选择增加一个目录2,然后把0实例的目录0直接文件夹拷贝一份,命名为目录2,实例2增加完成,如下所示:

internetgatewaydevice/wandevice/1/wanconnectiondevice/1/wanipconnection/1/portmapping/2/

如果需要删除实例,根据指定删除实例号,比如需要删除实例2,那么直接删除目录2整个文件夹即可。

通过对象的属性文件对访问进行加锁,读取配置数据时采用共享锁,写入配置数据时采用互斥锁。

实施例4:

参见图2所示,本实施例公开了一种家庭网关快速访问配置数据的存储访问系统,包括:

xml文件转换模块,其用于将根据tr098规范定义的配置数据转换为xml文件;

文件目录树生成模块,其用于解析xml文件中的对象和参数,根据对象的名称、参数的属性和参数的值生成文件目录树;

文件目录路径转换模块,其用于应用程序需要访问配置数据时,使用api接口将xml文件的对象的全路径转换成文件目录路径;

文件目录树访问模块,其用于使用操作系统的文件操作接口,根据文件目录路径访问文件目录树,获得xml文件的对象的属性、参数的属性以及参数的值。

所述xml文件转换模块将根据tr098规范定义的配置数据转换为xml文件,具体包括以下过程:

将根据tr098规范定义的配置的对象的名称转换为xml文件的对象的名称;

将根据tr098规范定义的配置的参数的名称转换为xml文件的参数的名称;

将根据tr098规范定义的配置的参数的类型转换为xml文件的参数的属性;

将根据tr098规范定义的配置的参数的值转换为xml文件的参数的值。

所述文件目录树的生成规则为:

将xml文件中每个对象分别作为文件目录,对象的下一级对象作为文件目录下的子目录;

将对象的属性和对象下的参数的属性保存在属性文件中;

将参数的值保存在值文件中。

实施例5:

在实施例4的基础上,应用程序需要访问配置数据时,使用api接口将xml文件的对象的全路径转换成文件目录路径,具体过程为:

api把全路径的‘.’转换为‘/’,形成一个文件目录路径。例如:

转换前:

internetgatewaydevice.wandevice.1.wanconnectiondevice.1.wanipconnection.1.portmapping.

转换后:

internetgatewaydevice/wandevice/1/wanconnectiondevice/1/wanipconnection/1/portmapping/

所述文件目录树访问模块使用操作系统的文件操作接口,根据文件目录路径访问文件目录树,获得xml文件的对象的属性、参数的属性以及参数的值,具体过程为:

使用操作系统的文件操作接口,根据文件目录路径访问xml文件参数所属的对象对应的文件目录;

读取该文件目录下的属性文件,获得xml文件的对象的属性以及参数的属性;

读取该文件目录下的值文件,根据参数的名称,获得xml文件的参数的值。

实施例6:

在实施例4的基础上,配置数据为动态实例时,所述xml文件转换模块还用于根据tr098规范指定的参数的属性及默认值转换成xml文件作为0模板。

所述系统还包括动态实例增删模块,其用于需要增加动态实例时,将0模板对应的文件目录拷贝一份,将拷贝得到的文件目录的名称修改为一个没有使用的实例号;需要删除动态实例时,删除该动态实例对应的文件目录。

增加动态实例的具体过程为:

1)根据全路径对应的文件目录路径,使用操作系统的文件操作接口,读取该动态实例所属的对象目录下的属性文件,获取该对象的属性和参数的属性。

2)根据对象的max属性,获知该动态实例的最大实例个数。

3)如果需要增加实例,判断当前实例个数没有超过最大实例个数限制,即可增加。具体增加方法,选择一个没有使用的实例号(文件目录),比如现在已经存在目录1,那么可以选择增加一个目录2,然后把0实例的目录0直接文件夹拷贝一份,命名为目录2,实例2增加完成,如下所示:

internetgatewaydevice/wandevice/1/wanconnectiondevice/1/wanipconnection/1/portmapping/2/

如果需要删除实例,根据指定删除实例号,比如需要删除实例2,那么直接删除目录2整个文件夹即可。

所述文件目录树访问模块还用于通过对象的属性文件对访问进行加锁,读取配置数据时采用共享锁,写入配置数据时采用互斥锁。

实施例7:

在实施例1-6的基础上,根据tr098规范转换的xml文件实例如下:

根据上述xml文件生成的文件目录树实例如下:

:/var/internetgatewaydevice#ls

wandevice

property.conf

:/var/internetgatewaydevice/wandevice#ls

1

property.conf

:/var/internetgatewaydevice/wandevice/1#ls

wanconnectiondevice

property.conf

:/var/internetgatewaydevice/wandevice/1/wanconnectiondevice/1/wanipconnection/1/portmapping#ls

01property.conf

:/var/internetgatewaydevice/wandevice/1/wanconnectiondevice/1/wanipconnection/1/portmapping/1#ls

property.confvalue.conf

其中的property.conf是属性文件,value.conf是值文件。

property.conf文件设计为结构体二进制流形式,便于编码时结构体格式化快速获取信息。根据xml文件所包含的属性,文件内根据参数的个数,依次存放:对象属性信息结构体,参数1属性信息结构体,参数2属性信息结构体等。

value.conf文件只存放参数的值,其内部按照参数的顺序,以行来依次存放对象下的参数的值。

其中对象属性信息结构体主体结构如下,主要包括:下辖参数个数,最大动态实例个数等(其中reserv1和reserv2是为了对齐预留,可用于增加属性后扩展使用,另外此处描述的属性主要是为了举例说明使用,并未列出所有可能存在的属性):

typedefstructobj_node{

unsigndcharparam_num;

unsigndcharmax;

unsigndcharreserv1;

unsigndcharreserv2;

}packobj_node;

其中参数属性信息结构体主体结构如下,主要包括:参数类型,参数名称等(其中reserv1,reserv2和reserv3是为了对齐预留,可用于增加属性后扩展使用,另外此处描述的属性主要是为了举例说明使用,并未列出所有可能存在的属性):

typedefstructparam_node{

unsigndchartype;

unsigndcharreserv1;

unsigndcharreserv2;

unsigndcharreserv3;

charname[256];

}packparam_node;

如上例中,

internetgatewaydevice.wandevice.1.wanconnectiondevice.1.wanipconnection.1.portmapping.1.对象含有2个参数,因此其属性文件就由其本身对象属性结构体+参数1属性结构体+参数2的属性结构体组成,以二进制流形式存放在internetgatewaydevice/wandevice/1/wanconnectiondevice/1/wanipconnection/1/portmapping/1/property.conf文件中。

其中该对象下有2个参数,max属性不存在,因此其对象属性的param_num为2,max为0;该对象下管辖2个参数,参数1的属性type为b(bool型),name为“portmappingenable”,参数2的属性type为u(unsignedint),name为“portmappingleaseduration”。

参数portmappingenabled和portmappingleaseduration,其值(value)分别是0和0,所以internetgatewaydevice/wandevice/1/wanconnectiondevice/1/wanipconnection/1/portmapping/1/value.conf文件内部按照参数排列顺序每行存放如下:

0

0

本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1