CN101146028B - 一种通讯系统中的报文数据提取方法 - Google Patents
一种通讯系统中的报文数据提取方法 Download PDFInfo
- Publication number
- CN101146028B CN101146028B CN2006101520437A CN200610152043A CN101146028B CN 101146028 B CN101146028 B CN 101146028B CN 2006101520437 A CN2006101520437 A CN 2006101520437A CN 200610152043 A CN200610152043 A CN 200610152043A CN 101146028 B CN101146028 B CN 101146028B
- Authority
- CN
- China
- Prior art keywords
- data
- class
- message
- variable
- recirculates
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及各种通讯领域中报文数据的提取方法,尤其涉及通讯领域中网管与主控板、主控板与业务板之间的报文数据提取方法。本发明公开的一种通讯系统中的报文数据提取方法,通过类来代替结构和指针偏移读取报文中的数据,通过类的关联保持各重循环数据的关联,把报文数据转化成类实例,再把类实例通过转化成不带循环的扁平数据。本发明保持了各重循环数据的关联,具有更好的可扩展性,能够把任意重循环的报文数据都方便的提取出来,而且能够容易的编写一种通用的数据查询方法来查找满足各种条件的报文。
Description
技术领域
本发明涉及各种通讯领域中报文数据的提取方法,尤其涉及通讯领域中网管与主控板、主控板与业务板之间的报文数据提取方法。
背景技术
在通讯系统中,如光通讯领域,用户要配置某项业务,一般来说由网管把配置业务的数据发送到主控板(发送的数据称之为报文数据,简称报文),然后主控板对报文进行集中管理,然后转发到业务板。业务板的状态信息也是通过发送报文到主控板,再由主控板转发到网管。因此网管、主控板和业务板三者之间存在着报文数据传输。
随着用户需求的增加和系统功能的增强,报文数据量越来越大。为了减少传输数据量,报文数据格式采用多重循环的定义方法。比如一条设置MCU RPR端口环选择报文的数据如下所示,单位字节:
目标子架地址(1),目标板地址(2),端口类型(1),端口号(2),业务数目(2),||环选择方式(1),环选择状态(1),RPR业务ID(2),保留(2),设置项数目(2)|||VLAN_S号(2),VLAN_E号(2),保留(2)|||…||…|,,,。
两个|号之间为第一重循环,两个||号之间为第二重循环,以此类推。各种不同的报文具有一重、两重,或任意重循环数据。各重循环数据之间紧密联系,是一种包含与被包含的关系。采用多重循环的定义方法后,报文数据格式更简洁,传输的数据量更少。如主控板发送到业务板的一条报文中带有一个一重循环,两个二重循环,每个二重循环中带有两个三重循环,则发送的报文如下:
目标子架地址,目标板地址,端口类型,端口号,业务数目,环选择方式,环选择状态,RPR业务ID,保留,设置项数目,VLAN_S号,VLAN_E号,保留,VLAN_S号,VLAN_E号,保留,环选择方式,环选择状态,RPR业务ID,保留,设置项数目,VLAN_S号,VLAN_E号,保留,VLAN_S号,VLAN_E号,保留。
假如不带循环定义的方法,发送的报文数据量为88字节。采用了带循环定义的方法后,发送的报文数据量为48字节,大大减少了传输的报文数据量。
一般提取带循环定义的报文数据的方法是定义结构和偏移指针,该方法有如下缺点:
1、失去了各重循环数据之间的关联。第一重循环的结构变量跟第二重循环的结构变量是没有关联的。
2、不利于扩展报文数据。假如原有两重循环,现在要增加第三重循环,由于指针偏移量改变了,则已有的提取数据方法也要改变。
3、不利于提取报文数据。假如要提取第三重循环中的数据,则要先把指针偏移到第一重循环数据开始位置,再把指针偏移到第二重循环数据开始位置,再把指针偏移到第三重循环数据的开始位置才能够提取数据。
4、不利于查询报文。由于报文的数据不一样,循环重数也不一样,每一种报文都需要一种特定的查询算法,难以编写一种支持各种命令报文的通用的查询算法。
发明内容
本发明的目的是为了克服现有报文数据提取方法中失去了各重循环数据之间的关联、不利于扩展、不利于提取报文数据、不利于查询报文的缺点,具体涉及一种通讯系统中的报文数据提取方法,能够把任意重循环的报文数据都方便的提取出来,而且能够保持各重循环数据的关联,容易扩展,容易查询。
本发明的技术方案是通过类来代替结构和指针偏移读取报文中的数据,通过类的关联保持各重循环数据的关联,把报文数据转化成类实例(树状数据),再把类实例(树状数据)转化成不带循环的扁平数据(类似关系数据库表中的一行数据)。
本发明具体是这样实现的:
一种通讯系统中的报文数据提取方法,包括如下步骤:
第一步骤,建立与报文数据中各重循环数据对应的一个类,所述类中建立与各重循环数据对应的类成员变量,所述类中建立与下一重循环数据对应的类关联,所述类中建立将本重循环的报文数据拷贝到类成员变量的成员函数;
第二步骤,生成与报文数据中第一重循环数据对应的第一重循环类实例数组,调用该类实例数组的成员函数把报文数据中的第一重循环数据拷贝入类实例的类成员变量中,重复该过程直至将报文数据中的最后一重循环数据拷贝入与之对应的类实例的类成员变量中;
第三步骤,通过类关联,从第一重循环类实例开始遍历类实例的成员变量及其关联的类实例成员变量,把成员变量值拷贝入缓冲区中。
所述第一步骤中,所述类关联使用成员指针实现。
所述第三步骤中,所述遍历类实例的成员变量及其关联的类实例成员变量是先根顺序、中根顺序、后根顺序进行的。
采用本发明所述的数据提取方法,与现有技术相比,保持了各重循环数据的关联,具有更好的可扩展性,能够把任意重循环的报文数据都方便的提取出来,而且能够容易的编写一种通用的数据查询方法来查找满足各种条件的报文。
附图说明
图1为本发明所述的提取报文数据流程图;
图2(1)为发明中定义类来保持循环数据关联性示意图;
图2(2)为图2(1)的图例说明示意图;
图3为报文数据转化成类实例(树状数据)示意图;
图4为类实例(树状数据)转化成扁平数据示意图。
具体实施方式
随着通讯系统的发展,很多通讯设备如光传输设备中的板间通讯数据量不断增大,导致传输时间的开销不断增大。为了减少板间报文的数据量,采用了带循环定义的方法来减少报文数据。从带循环的报文数据中提取数据的一般方法是定义结构和偏移指针,该种方法存在提取数据不便,扩展性不好等缺点。
本发明的技术方案是通过类来代替结构和指针偏移读取报文中的数据(字节数组),通过类的关联保持各重循环数据的关联,把报文数据转化成类实例(树状数据),再把类实例(树状数据)通过转化成不带循环的扁平数据(类似关系数据库表中的一行数据)。使用了该种方法后,能够更方便的提取报文中的数据,而且能够支持任意重循环,具有更好的可扩展性。
本发明的方案步骤如下:
第一步,定义跟报文中各重循环数据对应的类,并在类中定义与各重循环数据对应的成员变量。在类中定义与下一重循环对应的类关联。该关联可以使用成员指针实现,即指针指向下一重循环数据对应的类。这样报文各重循环数据的关联就通过类的关联保持下来。由于存在着类的关联,第一重循环跟第二重,第三重,甚至任意重循环都能关联起来。在类中定义一个成员函数,该成员函数的功能是把本重循环的报文数据拷贝到类成员变量中。假如存在着下一重循环数据,则生成下一重循环的类实例数组,把下一重循环的报文数据拷贝入下一重循环类实例中;以下称该成员函数为ParsePacket函数;
第二步,通信模块接收报文数据;
第三步,生成与报文数据对应的第一重循环类实例,调用该类实例的ParsePacket函数把报文数据拷贝入类实例的成员变量中;
第四步,如果报文数据存在下一重循环数据,则生成下一重循环数据类实例数组,把报文中的下一重循环数据拷贝入下一重循环数据类实例数组中;直至最后一重循环数据;
第五步,通过类的关联,从第一重循环类实例(树状数据)开始遍历本实例的成员变量及其关联的类实例成员变量,把成员变量值拷贝入缓冲区中,缓冲区中的数据即为不带循环的扁平数据。遍历类实例树状数据的方法可以是先根顺序、中根顺序或后根顺序;
该实施步骤的流程图如附图1。使用本发明的方法,即可从扁平数据中方便的提取报文数据。
下面以网管发送设置MCU RPR端口环选择报文数据(该报文数据带有一个一重循环,两个二重循环,每个二重循环中带有两个三重循环)到主控板为例,具体解析本发明的实施步骤。如下:
第一步,定义跟报文中第一重循环数据对应的类CSetRprPortRingSel1,并添加成员变量表示目标子架地址,目标板地址,端口类型,端口号,业务数目;定义跟报文中第二重循环数据对应的类CsetRprPortRingSel2,并添加成员变量表示环选择方式,环选择状态,RPR业务ID,保留,设置项数目;定义跟报文中第三重循环数据对应的类CsetRprPortRingSel3,并添加成员变量表示VLAN_S号,VLAN_E号,保留;
第二步,在CSetRprPortRingSel1类中增加成员变量指针指向下一重循环数据对应的类,即指向CsetRprPortRingSel2类,初始化为空指针;在CsetRprPortRingSel2类中增加成员变量指针指向下一重循环数据对应的类,即指向CsetRprPortRingSel3类,初始化为空指针;
第三步,在CsetRprPortRingSel1类中增加成员函数ParsePacket,该函数的功能是把报文数据拷贝到CsetRprPortRingSel1类的目标子架地址,目标板地址,端口类型,端口号,业务数目成员变量中;如果业务数目值大于零,还要调用CsetRprPortRingSel2类的ParsePacket函数;在CsetRprPortRingSel2类中增加成员函数ParsePacket,该函数的功能是把报文数据拷贝到CsetRprPortRingSel2类的环选择方式,环选择状态,RPR业务ID,保留,设置项数目成员变量中;如果设置项数目值大于零,还要调用CsetRprPortRingSel3类的ParsePacket函数;在CsetRprPortRingSel3类中增加成员函数ParsePacket,该函数的功能是把报文数据拷贝到CsetRprPortRingSel3类的VLAN_S号,VLAN_E号,保留成员变量中,如附图2(1);
第四步,从通信模块中接收报文数据;
第五步,生成CSetRprPortRingSel1类的实例,调用该实例的ParsePacket成员函数;CSetRprPortRingSel1类的ParsePacket成员函数把报文数据拷贝入成员变量目标子架地址,目标板地址,端口类型,端口号,业务数目中;业务数目值为2,生成CsetRprPortRingSel2类实例数组,数组长度为2,数组起始地址保存在CSetRprPortRingSel1类的下一重循环类成员指针中;
第六步,遍历CsetRprPortRingSel2类实例数组,调用CsetRprPortRingSel2类实例的ParsePacket方法;CsetRprPortRingSel2类的ParsePacket成员函数把报文数据拷贝入成员变量环选择方式,环选择状态,RPR业务ID,保留,设置项数目中;设置项数目值为2,生成CsetRprPortRingSel3类实例数组,数组长度为2,数组起始地址保存在CsetRprPortRingSel2类的下一重循环类成员指针中;
第七步,CsetRprPortRingSel3类的ParsePacket成员函数把报文数据拷贝入成员变量VLAN_S号,VLAN_E号,保留,如附图3;
第八步,生成4个缓冲区;
第九步,使用先根顺序遍历CsetRprPortRingSel1类实例,及其下一重循环类实例的成员变量,把成员变量值拷贝入缓冲区中,如附图4;
通过以上的操作即可把报文数据转化成为扁平数据,保存在缓冲区中。用户可以从扁平数据中方便的提取报文中任何位置的数据。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰应视为本发明的保护范围。
Claims (3)
1.一种通讯系统中的报文数据提取方法,其特征在于:
第一步骤,建立与报文数据中各重循环数据对应的一个类,所述类中建立与各重循环数据对应的类成员变量,所述类中建立与下一重循环数据对应的类关联,所述类中建立将本重循环的报文数据拷贝到类成员变量的成员函数;
第二步骤,生成与报文数据中第一重循环数据对应的第一重循环类实例数组,调用该类实例数组的成员函数把报文数据中的第一重循环数据拷贝入类实例的类成员变量中,重复该过程直至将报文数据中的最后一重循环数据拷贝入与之对应的类实例的类成员变量中;
第三步骤,通过类关联,从第一重循环类实例开始遍历类实例的成员变量及其关联的类实例成员变量,把成员变量值拷贝入缓冲区中。
2.如权利要求1所述的通讯系统中的报文数据提取方法,其特征在于:
所述第一步骤中,所述类关联使用成员指针实现。
3.如权利要求1所述的通讯系统中的报文数据提取方法,其特征在于:
所述第三步骤中,所述遍历类实例的成员变量及其关联的类实例成员变量是先根顺序、中根顺序、后根顺序进行的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2006101520437A CN101146028B (zh) | 2006-09-12 | 2006-09-12 | 一种通讯系统中的报文数据提取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2006101520437A CN101146028B (zh) | 2006-09-12 | 2006-09-12 | 一种通讯系统中的报文数据提取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101146028A CN101146028A (zh) | 2008-03-19 |
CN101146028B true CN101146028B (zh) | 2010-11-24 |
Family
ID=39208328
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006101520437A Expired - Fee Related CN101146028B (zh) | 2006-09-12 | 2006-09-12 | 一种通讯系统中的报文数据提取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101146028B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003010928A2 (fr) * | 2001-07-23 | 2003-02-06 | 6Wind | Procede pour le fonctionnement simultane d'au moins deux tunnels sur au moins un reseau |
CN1549108A (zh) * | 2003-05-07 | 2004-11-24 | 中兴通讯股份有限公司 | 一种实现通信过程零拷贝消息队列的方法 |
-
2006
- 2006-09-12 CN CN2006101520437A patent/CN101146028B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003010928A2 (fr) * | 2001-07-23 | 2003-02-06 | 6Wind | Procede pour le fonctionnement simultane d'au moins deux tunnels sur au moins un reseau |
CN1549108A (zh) * | 2003-05-07 | 2004-11-24 | 中兴通讯股份有限公司 | 一种实现通信过程零拷贝消息队列的方法 |
Non-Patent Citations (2)
Title |
---|
张建宇等.一种基于自适应缓存机制的报文分类算法.计算机研究与发展 2.2006,(2),196-203. |
张建宇等.一种基于自适应缓存机制的报文分类算法.计算机研究与发展 2.2006,(2),196-203. * |
Also Published As
Publication number | Publication date |
---|---|
CN101146028A (zh) | 2008-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1996303B (zh) | 为联网的媒体服务器中所存储的内容管理书签信息的方法和装置 | |
US8255398B2 (en) | Compression of sorted value indexes using common prefixes | |
CN102906747A (zh) | 用于可移动存储介质上的便携式索引的方法和装置 | |
CN101295311B (zh) | 一种大规模发布订阅系统的语义匹配算法 | |
US20040078370A1 (en) | Method and apparatus for real time creation and modification of a change log for multi-server synchronization | |
CN103401795B (zh) | 一种内容中心网络中传输内容冗余的消除方法 | |
CN109800336B (zh) | 基于键值对存储系统的表格实现方法、装置、设备和介质 | |
US10078624B2 (en) | Method of generating hierarchical data structure | |
CN105468793B (zh) | 一种仿真模型数据的自动化管理方法 | |
WO2021051624A1 (zh) | 数据获取方法、装置、电子设备及存储介质 | |
CN100536472C (zh) | 一种网络资源访问控制的方法、模块和服务器 | |
CN100574340C (zh) | 一种查找手机短信的方法 | |
CN104035993A (zh) | 电子书的存储检索方法、电子书管理系统、阅读系统 | |
Von der Weth et al. | Multiterm keyword search in NoSQL systems | |
CN104917786A (zh) | 一种节省客户端和服务器交互时的传输流量的方法和模块 | |
CN111178965B (zh) | 一种资源投放方法及服务器 | |
CN116301656A (zh) | 基于日志结构合并树的数据存储方法、系统及设备 | |
CN105589910A (zh) | 基于HBase的海量交易数据检索及系统 | |
CN102508690A (zh) | 一种嵌入式设备的命令行的保存方法和解码方法 | |
CN101146028B (zh) | 一种通讯系统中的报文数据提取方法 | |
CN103079194A (zh) | 业务适配方法、装置及系统 | |
CN103312743A (zh) | 一种数据同步装置和方法 | |
IL307410A (en) | Object data that is stored outside of the Victory Line subscription | |
CN103559264A (zh) | 一种微件数据及时更新的方法和装置 | |
KR20110077111A (ko) | 전자사전단말 업데이트시스템 및 업데이트방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101124 Termination date: 20150912 |
|
EXPY | Termination of patent right or utility model |