CN104580367A - 一种基于reactor模式的网络数据同步方法及*** - Google Patents
一种基于reactor模式的网络数据同步方法及*** Download PDFInfo
- Publication number
- CN104580367A CN104580367A CN201410743743.8A CN201410743743A CN104580367A CN 104580367 A CN104580367 A CN 104580367A CN 201410743743 A CN201410743743 A CN 201410743743A CN 104580367 A CN104580367 A CN 104580367A
- Authority
- CN
- China
- Prior art keywords
- network
- module
- event
- main frame
- subnet
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/1066—Session management
- H04L65/1073—Registration or de-registration
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Multimedia (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明提供一种基于reactor模式的网络数据同步方法,基于一子网内多个主机及所述子网外的多个主机组成的网络,所述主机均包括网络同步模块,包括以下步骤:通过一主机内的网络同步模块将本地产生的同步数据发往所述主机所在子网内的其他主机;通过一主机内的网络同步模块从网络UDP?socket接收所述主机所在子网内其他主机发送的同步数据;通过一主机内的网络同步模块从网络TCP?socket接收所述主机所在子网外的主机发送的同步数据。本发明还提供与详述方法对应的***。通过上述方法及***,需要进行同步的数据及其特有的处理逻辑等可向该***进行注册,实现将处理逻辑与同步***分离。
Description
技术领域
本发明涉及计算机网络技术领域,具体涉及一种基于reactor模式的网络数据同步方法及其***。
背景技术
在大数据接入下,一种服务由多台主机组成的子网,甚至多个子网组成的网络进行提供。实现子网间或子网内不同主机间重要数据实时同步,使每台主机重要数据保持完整性和一致性,是具有重要意义的。
中国发明专利申请“CN101667910A一种快速网络数据同步方法及其***”,提供了一种多主机多子网之间的快速数据同步的方法。包括下列步骤,在每个子网中设置一主机作为本地子网的中转节点;在每一中转节点内加载一配置文件,中转节点之间采用TCP方式连接;子网内的主机将需同步数据通过广播方式在本地子网内进行传输;中转节点根据所加载的配置文件将需同步数据传输到制定子网的中转节点;其他子网的中转节点将受到的需同步数据通过广播方式在本地子网内进行传输。其***包括若干子网,每个子网中设置一主机作为本地子网的中转节点,中转节点之间通过TCP方式连接,子网内部的主机之间通过广播方式连接;中转节点内包括一配置文件。
通过上述方案虽然能够实现网络数据的快速同步,然而在当前业务***中,存在多种不同类型重要数据需要实时同步,如对于固网数据,为实现用户上网数据与用户AD关联,考虑到用户上网数据与Radius认证数据可能不会分发到同一个主机上,需要将Radius认证数据进行子网内实时同步,而对于3G数据,为实现用户上网数据与用户终端关联,则需要将Gtp信令数据进行实时同步。后续随着***处理业务的增加,还将会有更多类型的数据进行实时同步。
在现有技术实际工程中,每次新增同步数据类型,均需要从端到端的考虑同步流程,当新增数据类型对应的发送目的地址或目的端口不同时,需要关注实现细节,即增加socket、维护socket,即使能够复用已有端口,也需要在端口上区分数据类型,从而调用不同的处理函数。另外,如果该数据类型对发送优先级有要求,则甚至需要新建数据缓存Ringbuffer,并控制发送策略,这些都涉及到对同步机制的修改,每新增一种数据类型,均需要耗费较大开发成本,并且导致代码可维护性、可读性更差。
而理论上,同步***不应该与业务处理混杂在一起,而应该为上层业务提供一个同步通道,并维护通道的畅通性。为更方便理解,以现实中的快递货物为例,发货人拨打快递公司的电话,快递员上门收货,发货人将要发送的货物交给快递员并告知发送目的地址并选择发送优先级(加急、普通、平邮等),此后发货人不需要关注快递公司内部的任务分发、货物运输路线等情况,这一切由快递公司负责,最终快递公司按照客户事先约定的要求,将货物交给收货人。同步***实现快递公司角色,发货人只需要将货物准备好并打个电话,收货人则负责对送到手的货物进行处理,这样从整个架构上实现了上层业务与同步***的分层。
现有技术实际工程中,发货人、快递员、收货人的角色定义并不清晰,发货人为了将货物发出去,可能需要自己提前把路铺好。各同步数据的处理逻辑与复杂的多线程和同步机制混杂在一起,随着需求变化,每次新增或更新同步数据类型,都要对既有机制带来影响。
从传输的同步数据角度,提出一种新的方法,能够方便快捷地添加同步数据类型,在子网内及其子网间能够实时网络同步为本领域的迫切需要解决的问题。
发明内容
针对上述问题,本发明的目的是提供一种基于reactor模式的网络数据同步方法,基于一子网内多个主机及所述子网外的多个主机组成的网络,所述主机均包括一网络同步模块,包括以下步骤:通过一主机内的网络同步模块将该主机所产生的的同步数据发往所述主机所在子网内的其他主机;通过一主机内的网络同步模块从网络UDP socket接收所述主机所在子网内其他主机发送的同步数据;通过一主机内的网络同步模块从网络TCP socket接收所述主机所在子网外的主机发送的同步数据。
具体地,通过网络同步模块将所有与其交互触发的同步数据作为事件进行管理,网络同步模块包括事件多路分解模块、事件处理模块;所述事件多路分解模块用以读取事件及分发事件,所述事件处理模块用以注册所述同步数据的处理函数。
进一步地,所述事件多路分解模块独立运行于一主线程,所述事件处理模块运行于由多个worker线程组成的线程池。
进一步地,所述读取事件及分发事件通过注册所述交互触发的同步数据的类型的分发策略实现,所述分发策略包括Round-Robin模式、优先级模式及指定线程模式。
进一步地,所述注册所述交互触发的同步数据的处理函数,包括所述同步数据本地处理逻辑及转发处理逻辑。
进一步地,所述主机还包括一上层应用模块,所述事件多路分解模块包括一网络应用模块,所述事件处理模块包括一网络通讯模块。
进一步地,所述网络应用模块用以初始化时注册到网络通讯模块,使用通用网络通道,控制发送策略;所述上层应用模块,对于需要同步的同步数据,初始化时注册到网络同步模块,需要网络同步时直接调用网络同步发送接口即可;所述网络通讯模块用以根据各上层网络应用模块注册到网络通讯模块的配置,创建线程池、维护socket状态、监听socket事件。
本发明的另一目的是提供一种实现上述方法的***,其包括:一子网内多个主机及所述子网外的多个主机组成的网络,所述主机均包括网络同步模块,所述网络同步模块用以将其所在主机产生的同步数据发往其所在子网内的其他主机、从网络UDP socket接收所述主机所在子网内其他主机发送的同步数据、从网络TCP socket接收子网外主机发送的同步数据。
进一步地,所述网络同步模块还用以将所有与其交互触发的同步数据作为事件进行管理,包括事件多路分解模块、事件处理模块;所述事件多路分解模块用以读取事件及分发事件,所述事件处理模块用以注册所述数据的处理函数。
进一步地,所述主机还包括一上层应用模块,所述事件多路分解模块包括一网络应用模块,所述事件处理模块包括一网络通讯模块。
如上述,通过上述方法及***,需要进行同步的数据及其特有的处理逻辑等可向该***进行注册,实现将处理逻辑与同步***分离。
附图说明
图1为本发明实施例中reactor模式的模块示意图。
图2为本发明实施例中同步数据同步处理流程示意图。
图3为本发明实施例中网络同步模块构成示意图。
图4为本发明实施例中GTP信令数据同步流程示意图。
具体实施方式
为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明如下。
本发明针对传统网络数据同步中的缺陷,提出一种高可复用的网络数据同步方法。
如图1所示,网络同步模块与其他***的交互触发类型有如下几种:
1从本机的多个上层应用模块接收到同步数据;
2从子网内其他主机接收到同步数据,其中,子网内同步数据使用UDP socket传输;
3从子网外主机接收到同步数据,其中,子网间同步数据使用TCP socket传输;
相应的,网络同步模块对应有以下功能点:
1将本地产生的的同步数据发往其他主机
2从网络UDP socket接收子网内其他主机发送的同步数据。
3从网络TCP socket接收子网外主机发送的同步数据。
如图2所示,基于reactor模式,将所有与网络同步模块的交互触发数据(本地数据、UDP socket数据、TCP socket数据等)作为事件进行管理,网络同步模块包括事件多路分解模块、事件处理模块。事件多路分解模块负责读取事件、分发事件,事件处理模块则完成对事件的处理。
事件多路分解模块独立运行于主线程,事件处理模块运行于由1~N个worker线程组成的线程池(N可配,根据承载业务量进行调整)。主线程负责读取事件,向线程池分发事件,线程池则处理分发到的事件,两者构成一个完整的网络同步模块。
基于上述reactor模式的基本模型,新增一种同步数据类型的步骤则分解为:
1对于事件多路分解模块,注册该同步数据类型的分发策略。分发策略默认使用Round-Robin模式,如果同步数据类型无特殊需求可不进行注册。事件多路分解模块提供分发策略的注册机制,可方便各种同步数据类型的灵活自定义。
2对于事件处理模块,注册该同步数据的处理函数,包括该同步数据本地处理逻辑、转发处理逻辑等。其中,本地处理逻辑与所同步数据类型相关,不同的同步数据类型处理逻辑不同,以radius数据为例,本地处理逻辑包括将数据加入本地hash表、写本地文件等。同样地,转发处理逻辑也与所同步数据类型相关,比如是否将该同步数据转发给其他主机、将该同步数据转发给子网内节点还是子网外节点等。
基于此模型构建出的网络同步模块如图3所示:
最底层为网络通讯模块,主要功能包括:根据网络应用模块注册的配置,创建线程池、维护socket状态、监听socket读写事件及将读取的数据交给网络应用模块处理。网络同步模块对socket的监听、状态维护基于libevent库实现。
举例说明,上层应用模块注册的配置如下:
线程池的线程数
TCP监听端口
UDP监听端口
Ringbuffer
那么,网络通讯模块的实现如下:
对于线程池的线程数,网络通讯模块根据该项配置启动相应的线程数,构成该同步数据对应的线程池。
对于TCP监听端口,调用libevent库提供的相应接口对TCP监听端口注册读事件以及事件处理回调函数,以监听、处理将要到来的连接。事件处理回调函数实现:接受socket连接,并根据分发策略将该socket连接分配到线程池中的某个线程。
对于UDP监听端口,创建socket,并根据分发策略将该socket连接分配到线程池中的某个线程。
此后,线程池中各worker线程对收到的socket连接,调用libevent库提供的相应接口注册socket读事件及读超时事件以及事件回调函数。其中,读事件回调函数:从socket连接读取数据,调用网络应用模块注册的回调接口,对收到的数据进行处理。读超时事件回调处理:用来监控socket连接状态,表明socket可能断开,进行socket连接探测、重新连接等处理。
网络应用模块,初始化时注册到网络通讯模块,运行过程中使用网络通讯模块维护的网络通道,控制发送策略,向上层应用模块提供网络同步发送接口。
上层应用模块,对于需要网络同步的数据,初始化时注册到网络应用模块,运行过程中需要网络同步时直接调用网络应用模块提供的网络同步发送接口即可。
这样,就实现了分层处理,上层不需要关心较底层的数据交互过程,完全专注于应用数据处理。
从数据的发送接收流程,分解处理步骤如下:
发送端:
1.根据配置的网络拓扑、发送方式(tcp、udp)等配置,进行初始化,创建socket等。
2.上层应用模块调用发送接口进行发送,发送接口自动提供根据socket状态及优先级进行发送,应用层不需要关注细节。
接收端:
1.基于socket事件创建监听事件
2.读事件,调用事件对应的回调函数进行处理。
3.应用层注册的处理函数进行处理
使用本发明提供的方法,可以快速添加需要同步的数据类型及其处理逻辑,无需关注底层实现细节。
实施例:
以增加GTP信令数据同步为例,
一个子网包含20台主机,每台主机均接入用户上网数据及GTP信令数据。每台主机需要将解析的GTP信令数据同步到子网内其他主机,以实现用户上网数据关联到用户终端。
相当于基于网络应用模块增加一种同步数据:
需要做如下修改,如图4-初始化部分所示:
GTP应用模块需要向网络应用模块注册数据处理回调函数。接口如下:
NetsyncRegAppFunc(int app_type,app_proc_func_tprocess_func);
以上是所需修改部分。
运行流程如图4运行时部分所示:
1对于其他主机发送的GTP同步数据,网络通讯模块中线程池worker线程监听到读事件,接收数据并调用网络应用模块向其注册的回调函数,网络模块回调函数中解析数据包头,根据数据包头中携带的应用类型判断是GTP类型同步数据,则调用GTP模块向其注册的回调处理函数,最终完成对GTP同步数据的处理。
2对于本地解析的GTP数据,如果需要同步,则调用网络模块提供的接口进行发送同步。该发送接口主要实现功能:将GTP应用模块传入的待发送数据及其数据类型组装成数据包,放入ringbuffer,网络通讯模块通过读取ringbuffer事件(该事件需要初始化阶段由网络通讯模块注册,并注册事件处理函数),从ringbuffer中读取数据,并调用相应的处理函数进行处理。
Claims (10)
1.一种基于reactor模式的网络数据同步方法,基于一子网内多个主机及所述子网外的多个主机组成的网络,所述主机均包括网络同步模块,包括以下步骤:通过一主机内的网络同步模块将所述主机产生的同步数据发往所述主机所在子网内的其他主机,从网络UDP socket接收所述主机所在子网内其他主机发送的同步数据以及从网络TCP socket接收所述主机所在子网外的主机发送的同步数据。
2.如权利要求1所述的基于reactor模式的网络数据同步方法,其特征在于,还包括以下步骤:通过网络同步模块将所有与其交互触发的同步数据作为事件进行管理,网络同步模块包括事件多路分解模块、事件处理模块;所述事件多路分解模块用以读取事件及分发事件,所述事件处理模块用以注册所述数据的处理函数。
3.如权利要求2所述的基于reactor模式的网络数据同步方法,其特征在于,所述事件多路分解模块独立运行于一主线程,所述事件处理模块运行于由多个worker线程组成的线程池。
4.如权利要求2所述的基于reactor模式的网络数据同步方法,其特征在于,所述读取事件及分发事件通过注册所述交互触发的同步数据的类型的分发策略实现,所述分发策略包括Round-Robin模式、优先级模式及指定线程模式。
5.如权利要求2所述的基于reactor模式的网络数据同步方法,其特征在于,所述注册所述交互触发的同步数据的处理函数,包括所述同步数据本地处理逻辑及转发处理逻辑。
6.如权利要求2所述的基于reactor模式的网络数据同步方法,其特征在于,所述主机还包括一上层应用模块,所述事件多路分解模块包括一网络应用模块,所述事件处理模块包括一网络通讯模块。
7.如权利要求6所述的基于reactor模式的网络数据同步方法,其特征在于,所述网络应用模块用以初始化时注册到网络通讯模块,使用通用网络通道,控制发送策略;所述上层应用模块,对于需要同步的同步数据,初始化时注册到网络同步模块,需要网络同步时直接调用网络同步发送接口即可;所述网络通讯模块用以根据各上层网络应用模块注册到网络通讯模块的配置,创建线程池、维护socket状态、监听socket事件。
8.一种基于reactor模式的网络数据同步***,包括:一子网内多个主机及所述子网外的多个主机组成的网络,所述主机均包括网络同步模块,所述网络同步模块用以将其所在主机产生的同步数据发往其所在子网内的其他主机、从网络UDP socket接收所述主机所在子网内其他主机发送的同步数据以及从网络TCP socket接收子网外主机发送的同步数据。
9.如权利要求8所述基于reactor模式的网络数据同步***,其特征在于,所述网络同步模块还用以将所有与其交互触发的同步数据作为事件进行管理,包括事件多路分解模块、事件处理模块;所述事件多路分解模块用以读取事件及分发事件,所述事件处理模块用以注册所述数据的处理函数。
10.如权利要求8所述基于reactor模式的网络数据同步***,其特征在于,所述主机还包括一上层应用模块,所述事件多路分解模块包括一网络应用模块,所述事件处理模块包括一网络通讯模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410743743.8A CN104580367B (zh) | 2014-12-08 | 2014-12-08 | 一种基于reactor模式的网络数据同步方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410743743.8A CN104580367B (zh) | 2014-12-08 | 2014-12-08 | 一种基于reactor模式的网络数据同步方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104580367A true CN104580367A (zh) | 2015-04-29 |
CN104580367B CN104580367B (zh) | 2018-03-20 |
Family
ID=53095525
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410743743.8A Active CN104580367B (zh) | 2014-12-08 | 2014-12-08 | 一种基于reactor模式的网络数据同步方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104580367B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106549809A (zh) * | 2016-11-24 | 2017-03-29 | 成都广达新网科技股份有限公司 | 一种实现网管***设备状态获取方法及装置 |
CN111258779A (zh) * | 2020-01-13 | 2020-06-09 | 中孚安全技术有限公司 | 一种基于c++11的网络通信方法及*** |
CN112954006A (zh) * | 2021-01-26 | 2021-06-11 | 重庆邮电大学 | 支持Web高并发访问的工业互联网边缘网关设计方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101140529A (zh) * | 2007-10-23 | 2008-03-12 | 中兴通讯股份有限公司 | 一种基于同步事件多路分离器的多事件处理方法及装置 |
CN101667910A (zh) * | 2009-10-16 | 2010-03-10 | 北京锐安科技有限公司 | 一种快速网络数据同步方法及其*** |
CN102111451A (zh) * | 2011-03-02 | 2011-06-29 | 上海市共进通信技术有限公司 | 基于反应堆模式的分布式多任务协作处理网络***及方法 |
CN103458020A (zh) * | 2013-08-28 | 2013-12-18 | 华南理工大学 | 一种基于xcp的云平台的监控方法及*** |
-
2014
- 2014-12-08 CN CN201410743743.8A patent/CN104580367B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101140529A (zh) * | 2007-10-23 | 2008-03-12 | 中兴通讯股份有限公司 | 一种基于同步事件多路分离器的多事件处理方法及装置 |
CN101667910A (zh) * | 2009-10-16 | 2010-03-10 | 北京锐安科技有限公司 | 一种快速网络数据同步方法及其*** |
CN102111451A (zh) * | 2011-03-02 | 2011-06-29 | 上海市共进通信技术有限公司 | 基于反应堆模式的分布式多任务协作处理网络***及方法 |
CN103458020A (zh) * | 2013-08-28 | 2013-12-18 | 华南理工大学 | 一种基于xcp的云平台的监控方法及*** |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106549809A (zh) * | 2016-11-24 | 2017-03-29 | 成都广达新网科技股份有限公司 | 一种实现网管***设备状态获取方法及装置 |
CN111258779A (zh) * | 2020-01-13 | 2020-06-09 | 中孚安全技术有限公司 | 一种基于c++11的网络通信方法及*** |
CN112954006A (zh) * | 2021-01-26 | 2021-06-11 | 重庆邮电大学 | 支持Web高并发访问的工业互联网边缘网关设计方法 |
CN112954006B (zh) * | 2021-01-26 | 2022-07-22 | 重庆邮电大学 | 支持Web高并发访问的工业互联网边缘网关设计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104580367B (zh) | 2018-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103430498B (zh) | 一种网络虚拟化的数据传输的方法、设备和路由*** | |
CN103259703B (zh) | 适用于电力行业的实时总线跨安全区通信方法 | |
CN102053813B (zh) | 一种拼接墙控制方法及其装置 | |
CN100581177C (zh) | 获得互联网协议地址及建立操作维护链路的方法和*** | |
CN102891802B (zh) | 数据分流方法、移动终端及数据分流*** | |
CN102811174B (zh) | 一种监控业务处理方法和nvr | |
CN102882781B (zh) | 一种报文发送的方法、路由器桥及*** | |
CN105830405A (zh) | 用于可扩展的域间覆盖联网的***和方法 | |
CN105490957A (zh) | 一种负载分担方法及装置 | |
CN109039888A (zh) | 报文环路消除方法及分布式弹性dr设备 | |
CN101262366A (zh) | 目标单板调试方法、***及分布式设备 | |
CN104580367A (zh) | 一种基于reactor模式的网络数据同步方法及*** | |
CN110062060A (zh) | 一种ip地址分配的***和方法 | |
CN105451272A (zh) | 数据交互方法、基带处理单元、射频拉远单元及中继单元 | |
CN105376131A (zh) | 一种组播迁移方法和网络设备 | |
CN106413127A (zh) | Relay设备连接远程网管服务器的方法、***及Relay设备 | |
CN105632385A (zh) | 一种led显示屏盲点检测方法及其检测装置 | |
CN104618148A (zh) | 一种防火墙设备的备份方法和设备 | |
CN105376800A (zh) | 一种微基站的组网通信方法、***和集中控制设备 | |
CN102238040B (zh) | 一种对ce进行监控的方法和路由设备 | |
CN106130863A (zh) | 局域网协议报文的传送方法、装置以及*** | |
CN103780437A (zh) | 一种信息同步方法和装置 | |
CN101561919A (zh) | 一种运单快递***及其快递方法 | |
CN102868585B (zh) | 一种ip监控***中节约带宽的方法及装置 | |
CN102546415B (zh) | 一种基于vxworks平台上快速收发以太网报文的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |