一种扁平化码流节点及报文的扁平化码流编解码方法

文档序号:7917678阅读:218来源:国知局
专利名称:一种扁平化码流节点及报文的扁平化码流编解码方法
技术领域
本发明涉及一种码流节点及报文的编解码方法,尤其是一种扁平 化码流节点及一艮文的扁平化码流编解码方法。
背景技术
网管系统中,ASN. 1 (Abstract Syntax Notation One,抽象语法 标识)报文的传递有一个编码及解码的过程。编码时,将不同的ASN. 1 数据类型或结构编制成二进制码流;解码时,将二进制码流还原成具 体的ASN. 1数据类型或结构。
对ASN. 1才艮文的编解码,目前业界普遍采用标准的BER (Basic Encoding Rules,基本编码头见贝'J )方式。BER方式的一个显著缺陷就 是不能兼容不同版本的报文,同时,可扩展性也较差。实际应用中, ASN. 1报文版本随着用户需求的不断变化而变化,这就需要网管系统 能够兼容报文的不同版本,但标准的BER方式无法实现。

发明内容
本发明要解决的技术问题是提供一种扁平化码流节点及报文的扁 平化码流编解码方法,实现了网管系统对不同版本才艮文的兼容。 本发明解决其技术问题所采用的技术方案是 一种扁平化码流节点,包括名称、类型、索引、成员数及数据字段,各个字段间通过预设的第一标志符分隔,并且,所述扁平化码流 节点的起始与结束通过预设的第二标志符标示。
上述方案中,所述数据字段包括报文长度字段及报文数据字段,
所述报文长度字段为4个字节;所述扁平化码流节点的类型为Bit String时,所述报文数据字段还包括4个字节的有效位字段。 一种l艮文的扁平化码流编码方法,包括以下步骤
a、 将报文编译成扁平化码流编码源数据;
b、
码流节点;
c、 依次构造所述结构体各个数据成员对应的扁平化码流节点,所 述数据成员为结构体时,采用所述结构体编码方法构造其对应的扁平 化码流节点,并将其所属的各个结构体对应的扁平化码流节点的成员 数递增1;所述数据成员为基本数据类型数据时,采用基本数据类型 数据编码方法构造其对应的扁平化码流节点,并将其所属的各个结构 体对应的扁平化码流节点的成员数递增1。
上述方案中,所述结构体编码方法如下构造一扁平化码流节点, 所述扁平化码流节点的名称为所述结构体的名称;类型为空;所述结 构体为其它结构体的数据成员时,索引为其在所述其它结构体数据成
员中的位置值,否则,索引为负整数;成员数为0;数据字段中的报 文数据为空,报文长度为0;所述名称、类型、索引、成员数及数据 字段之间通过预设的第 一标志符分隔,所述扁平化码流节点的起始与 结束通过预设的第二标志符标示。
上述方案中,所述基本数据类型数据编码方法如下构造一扁平 化码流节点,所述扁平化码流节点的名称为所述基本数据类型数据的变量名称;类型为空或者所述基本数据类型;所述基本数据类型数据
为结构体的数据成员时,索引为其在所述结构体数据成员中的位置值,
否则,索引为负整数;成员数为0;数据字段中的报文数据为所述基 本数据类型数据的业务数据,报文长度为所述报文数据所占的字节数; 所述名称、类型、索引、成员数及数据字段之间通过预设的第一标志 符分隔,所述扁平化码流节点的起始与结束通过预设的第二标志符标 示。
上述方案中,所述基本lt据类型为Bit String时,所述扁平化码 流节点的类型为Bit String,并且,所述数据字段存在有效位字段, 其值为所述报文数据所占的比特位数。
一种才艮文的扁平化码流解码方法,包括以下步骤
A、 确定扁平化码流对应的结构体及基本数据类型数据之间的关
系;
B、 将所述扁平化码流节点还原成对应的结构体或基本数据类型数 据,并根据所述关系组织所述结构体及基本数据类型数据。
上述方案中,所述步骤B中,还原所述扁平化码流节点时,若所 述扁平化码流节点的成员数不为0,直接将其还原成同一名称的结构 体;若所述扁平化码流节点的成员数为0,根据其数据字段中的报文 数据获取业务数据,并将其还原成同一名称的基本数据类型数据。 上述方案中,所述步骤A具体包括以下步骤 Al、确定所述扁平化码流包含的扁平化码流节点; A2、根据所述扁平化码流节点的索引及成员数确定所述扁平化码 流对应的结构体数据及基本数据类型数据之间的关系。
上述方案中,所述步骤A1中,根据预设的第一标志符及第二标志符确定所述扁平化码流节点。
本发明的有益效果主要表现在本发明提供的报文的扁平化码流
编码方法将树状码流结构压缩成包含本发明所述的扁平化码流节点的 扁平化码流,本发明提供的寺艮文的扁平化码流解码方法通过码流节点 名称的严格匹配,将上述扁平化码流恢复成树状码流结构,从而实现 了网管系统对不同版本报文的兼容,并且增强了编解码时码流节点的 可扩展性。


图1为本发明扁平化码流节点的结构示意图; 图2为本发明报文的扁平化码流编码流程图; 图3为本发明报文的扁平化码流解码流程图。
具体实施例方式
下面结合附图对本发明作进一步的描述。
参照图1, 一种扁平化码流节点,包括名称、类型、索引、成员 数及数据字段,各个字段间通过预设的第一标志符,如"\0"分隔, 并且,该扁平化码流节点的起始与结束通过预设的第二标志符标示, 如釆用对应的"{"及"}"分别标示该扁平化码流节点的起始与结束; 扁平化码流节点的数据字段进一步包括报文长度字段及报文数据字 段,报文长度字段为4个字节,并且,扁平化码流节点的类型为Bit String时,报文数据字段还包括4个字节的有效位字段。
扁平化码流节点为报文扁平化码流的基本元素,作为第一标志符 及第二标志符的符号不能在数据字段以外的其它字段出现。下面描述的报文的扁平化码流编码方法及报文的扁平化码流解码方法均是基于 上述结构的扁平化码流节点。
参照图2, 一种报文的扁平化码流编码方法,包括以下步骤
S201:将报文编译成扁平化码流编码源数据;为了便于跟踪调试, 可以同时将编译结果打印出来;
S202:采用结构体编码方法构造源数据根结构体对应的扁平化码 流节点;根结构体即源数据树状码流结构的根节点;
S203:依次构造该结构体各个数据成员对应的扁平化码流节点, 数据成员为结构体时,采用结构体编码方法构造其对应的扁平化码流 节点,并将其所属的各个结构体对应的扁平化码流节点的成员数递增
1;数据成员为基本数据类型数据时,采用基本数据类型数据编码方法 构造其对应的扁平化码流节点,并将其所属的各个结构体对应的扁平 化码流节点的成员数递增1。其中,基本数据类型凝:据包括Interger、 Bit String、 Boolean、 long等lt才居类型。 上述流程中所述的结构体编码方法如下
构造一扁平化码流节点,该扁平化码流节点的名称为结构体的名 称;类型为空;结构体为其它结构体的数据成员时,索引为其在所述 其它结构体数据成员中的位置值,否则,索引为负整数,可以取-l; 成员数为0;数据字段中的报文数据为空,报文长度为0;名称、类型、 索引、成员数及数据字段之间通过第一标志符分隔,该扁平化码流节 点的起始与结束通过第二标志符标示。
上述流程中所述的基本数据类型数据编码方法如下构造一扁平 化码流节点,该扁平化码流节点的名称为该基本^t据类型数据的变量 名称;类型为空或者该基本数据类型;该基本数据类型数据为结构体数据的数据成员时,索引为其在结构体数据成员中的位置值,否则,
索引为负整数,可以取-l;成员数为0;数据字段中的报文数据为所 述基本数据类型数据的业务数据,报文长度为所述报文数据所占的字 节数;名称、类型、索引、成员数及数据字段之间通过第一标志符分 隔,该扁平化码流节点的起始与结束通过第二标志符标示。
进一步地,该基本数据类型为Bit String时,扁平化码流节点的 类型字段不能为空,为Bit String,并且,其数据字段存在有效位字 段,值为报文数据所占的比特位数。
参照图3, 一种报文的扁平化码流解码方法,包括以下步骤 S 301:根据预设的第 一标志符及第二标志符确定其包含的扁平化 码流节点;
S302:根据扁平化码流节点的索引及成员数确定扁平化码流对应 的结构体及基本数据类型数据之间的关系;
S303:将扁平化码流节点还原成对应的结构体或基本数据类型数 据,并根据确定的关系组织结构体及基本数据类型数据;其中,还原 扁平化码流节点时,若该扁平化码流节点的成员数不为0,即该扁平 化码流节点对应结构体,本身的业务数据为空,因此,直接将其还原 成同一名称的结构体;若该扁平化码流节点的成员数为0,即该扁平 化码流节点对应基本数据类型数据,则根据其数据字段中的报文数据 获取业务数据,并将其还原成同一名称的基本数据类型数据。
从上述描述中可以看出,解码过程中扁平化码流节点与其对应的 结构体或基本数据类型数据的名称是严格匹配的,故不会出现解码错 位的情况,从而实现了网管系统对不同版本ASN. 1才艮文的兼容。
下面以结构体A为源数据,对本发明所述的^^艮文的扁平化码流编解码方法作进一步的描述,其中,结构体A的第一个数据成员为
Interger数据i,第二个数据成员为结构体B;结构体B的第一个数 据成员为Interger数据m,第二个数据成员为结构体C;结构体C的 第一个数据成员为Interger数据n,第二个数据成员为Bit String 数据p 。
编码时,依次进行以下操作
1、 对结构体A进行编码,其对应的扁平化码流节点的名称为A; 类型为空;索引为-1;成员数为0;数据字段的报文数据为空,报文 长度为0;名称、类型、索引、成员数及数据字段之间通过"\0"分 隔,该扁平化码流节点的起始及结束用对应的"{" "}"分别标示;
2、 对结构体A的第一个数据成员——Interger数据i进行编码, 其对应的扁平化码流节点的名称为i;类型为Interger;索引为O(表 示i为结构体A的第一个数据成员,即从0开始标示结构体A各个数 据成员的位置值);成员数为0;数据字段的报文数据为其业务数据的 整型编码,报文长度为报文数据所占的字节数;名称、类型、索引、 成员数及数据字段之间通过"\0"分隔,该扁平化码流节点的起始及 结束用对应的"{""广分别标示;构造i对应的扁平化码流节点的同 时,将其所属的结构体A对应的扁平化码流节点的成员数递增1;
3、 对结构体A的第二个数据成员 一一结构体B进行编码,其对应 的扁平化码流节点的名称为B;类型为空;索引为1 (表示结构体B 为结构体A的第二个数据成员);成员数为0;数据字段的报文数据为 空,报文长度为0;名称、类型、索引、成员数及数据字段之间通过
"\0"分隔,该扁平化码流节点的起始及结束用对应的"{" "}"分别 标示;构造结构体B对应的扁平化码流节点的同时,将其所属的结构体A对应的扁平化码流节点的成员数递增1;
4、 对结构体B的第一个数据成员——Interger数据m进行编码, 其对应的扁平化码流节点的名称为m;类型为Interger;索引为O(表 示m为结构体B的第一个数据成员,即从0开始标示结构体B各个数 据成员的位置值);成员数为0;数据字段的报文数据为其业务数据的 整型编码,报文长度为报文数据所占的字节数;名称、类型、索引、 成员数及数据字段之间通过"\0"分隔,该扁平化码流节点的起始及 结束用对应的"{" "}"分别标示;构造m对应的扁平化码流节点的同 时,将其所属的结构体A及结构体B对应的扁平化码流节点的成员数 分别递增1;
5、 对结构体B的第二个数据成员——结构体C进行编码,其对应 的扁平化码流节点的名称为C;类型为空;索引为1 (表示结构体C 为结构体B的第二个数据成员);成员数为0;数据字段的报文数据为 空,报文长度为0;名称、类型、索引、成员数及数据字段之间通过
"\0"分隔,该扁平化码流节点的起始及结束用对应的"{,, "},,分别 标示;构造结构体C对应的扁平化码流节点的同时,将其所属的结构 体A及结构体B对应的扁平化码流节点的成员数分别递增1;
6、 对结构体C的第一个数据成员——Interger数据n进行编码, 其对应的扁平化码流节点的名称为n;类型为Interger;索引为O(表 示n为结构体C的第一个数据成员,即从0开始标示结构体C各个数 据成员的位置值);成员数为0;数据字段的报文数据为其业务数据的 整型编码,报文长度为报文数据所占的字节数;名称、类型、索引、 成员数及数据字段之间通过"\0"分隔,该扁平化码流节点的起始及 结束用对应的"{""广分别标示;构造n对应的扁平化码流节点的同时,将其所属的结构体A、结构体B及结构体C对应的扁平化码流节 点的成员数分别递增1;
7、对结构体C的第二个数据成员一一Bit String数据p进行编 码,其对应的扁平化码流节点的名称为p;类型为Bit String;索引 为1 (表示p为结构体C的第二个数据成员);成员数为0;数据字段 的报文数据为其业务数据的字节编码,报文长度为报文数据所占的字 节数,有效位为报文数据所占的比特位数;名称、类型、索引、成员 数及数据字段之间通过"\0"分隔,该扁平化码流节点的起始及结束 用对应的"{" "}"分别标示;构造p对应的扁平化码流节点的同时, 将其所属的结构体A、结构体B及结构体C对应的扁平化码流节点的 成员数分别递增1。
至此该源数据的扁平化码流编码结束,此时,结构体A、结构体B 及结构体C对应的扁平化码流节点的成员数分别为6、 4及2。
在对其进行解码的过程中,根据图3所示的流程进行,通过对扁 平化码流节点与其对应的结构体或基本数据类型数据名称的严格匹 配,实现了网管系统对不同版本报文的兼容。
以上所述仅为本发明的实施例而已,并不用于限制本发明,对于 本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明 的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含 在本发明的权利要求范围之内。
权利要求
1、一种扁平化码流节点,其特征在于包括名称、类型、索引、成员数及数据字段,各个字段间通过预设的第一标志符分隔,并且,所述扁平化码流节点的起始与结束通过预设的第二标志符标示。
2、 如权利要求1所述的扁平化码流节点,其特征在于所述数据 字段包括报文长度字段及报文数据字段,所述报文长度字段为4个字 节;所述扁平化码流节点的类型为Bit String时,所述报文数据字段 还包括4个字节的有效位字段。
3、 一种报文的扁平化码流编码方法,其特征在于,包括以下步骤 a、将才艮文编译成扁平化码流编码源lt据;流节点; " —'、" 人、" "、、、、、'一c、依次构造所述结构体各个数据成员对应的扁平化码流节点,所 述数据成员为结构体时,采用所述结构体编码方法构造其对应的扁平 化码流节点,并将其所属的各个结构体对应的扁平化码流节点的成员 数递增1;所述数据成员为基本数据类型数据时,釆用基本数据类型 数据编码方法构造其对应的扁平化码流节点,并将其所属的各个结构 体对应的扁平化码流节点的成员数递增1。
4、如权利要求3所述的报文的扁平化码流编码方法,其特征在于, 所述结构体编码方法如下构造一扁平化码流节点,所述扁平化码流 节点的名称为所述结构体的名称;类型为空;所述结构体为其它结构 体的数据成员时,索引为其在所述其它结构体数据成员中的位置值, 否则,索引为负整数;成员数为0;数据字段中的报文数据为空,报 文长度为0;所述名称、类型、索引、成员数及数据字段之间通过预 设的第一标志符分隔,所述扁平化码流节点的起始与结束通过预设的 第二标志符标示。
5、如权利要求3所述的报文的扁平化码流编码方法,其特征在于, 所述基本数据类型数据编码方法如下构造一扁平化码流节点,所述 扁平化码流节点的名称为所述基本数据类型数据的变量名称;类型为 空或者所述基本数据类型;所述基本数据类型数据为结构体的数据成 员时,索引为其在所述结构体数据成员中的位置值,否则,索引为负整数;成员数为0;数据字段中的报文数据为所述基本数据类型数据 的业务数据,报文长度为所述报文数据所占的字节数;所述名称、类 型、索引、成员数及数据字段之间通过预设的第一标志符分隔,所述 扁平化码流节点的起始与结束通过预设的第二标志符标示。
6、 如权利要求5所述的报文的扁平化码流编码方法,其特征在于 所述基本数据类型为Bit String时,所述扁平化码流节点的类型为 Bit String,并且,所述数据字段存在有效位字段,其值为所述报文 数据所占的比特位数。
7、 一种报文的扁平化码流解码方法,其特征在于,包括以下步骤A、 确定扁平化码流对应的结构体及基本数据类型数据之间的关系;B、 将所述扁平化码流节点还原成对应的结构体或基本数据类型 数据,并根据所述关系组织所述结构体及基本数据类型数据。
8、 如权利要求7所述的报文的扁平化码流解码方法,其特征在于 所述步骤B中,还原所述扁平化码流节点时,若所述扁平化码流节点 的成员数不为0,直接将其还原成同一名称的结构体;若所述扁平化 码流节点的成员数为0,根据其数据字段中的报文数据获取业务数据, 并将其还原成同 一名称的基本数据类型数据。
9、 如权利要求7所述的报文的扁平化码流解码方法,其特征在于, 所述步骤A具体包括以下步骤Al、确定所述扁平化码流包含的扁平化码流节点; A2、根据所述扁平化码流节点的索引及成员数确定所述扁平化码 流对应的结构体数据及基本数据类型数据之间的关系。
10、 如权利要求9所述的报文的扁平化码流解码方法,其特征在 于所述步骤A1中,根据预设的第一标志符及第二标志符确定所述 扁平化码流节点。
全文摘要
本发明公开了一种扁平化码流节点及报文的扁平化码流编解码方法,所述扁平化码流节点包括名称、类型、索引、成员数及数据字段,各个字段间通过预设的第一标志符分隔,并且,所述扁平化码流节点的起始与结束通过预设的第二标志符标示。本发明所述技术方案实现了网管系统对不同版本报文的兼容。
文档编号H04L29/06GK101321177SQ200810141640
公开日2008年12月10日 申请日期2008年7月18日 优先权日2008年7月18日
发明者征 马 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1
imtoken助记词怎么填-imtoken钱包没有收益-imtoken矿工费太贵了-im钱包官网:token.im