KR100908889B1 - 네트워크 상의 텍스트 메시지를 처리하는 소스 코드 생성 방법 및 그 장치 - Google Patents

네트워크 상의 텍스트 메시지를 처리하는 소스 코드 생성 방법 및 그 장치 Download PDF

Info

Publication number
KR100908889B1
KR100908889B1 KR1020090017892A KR20090017892A KR100908889B1 KR 100908889 B1 KR100908889 B1 KR 100908889B1 KR 1020090017892 A KR1020090017892 A KR 1020090017892A KR 20090017892 A KR20090017892 A KR 20090017892A KR 100908889 B1 KR100908889 B1 KR 100908889B1
Authority
KR
South Korea
Prior art keywords
information
astrule
rule
noderule
list
Prior art date
Application number
KR1020090017892A
Other languages
English (en)
Inventor
김종성
Original Assignee
(주) 바인젠
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by (주) 바인젠 filed Critical (주) 바인젠
Priority to KR1020090017892A priority Critical patent/KR100908889B1/ko
Priority to PCT/KR2009/002070 priority patent/WO2010101327A1/ko
Application granted granted Critical
Publication of KR100908889B1 publication Critical patent/KR100908889B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • G06F9/4491Optimising based on receiver type
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven

Abstract

본 발명은 확장 규칙(Extension Rules)이 부가된 ABNF 소스 파일을 자동으로 컴파일하여 네트워크 상의 텍스트 메시지에 대한 디코딩/인코딩/검증(Decoding/Encoding/Verifying) 기능을 수행하는 C 소스 코드를 생성하는 방법 및 그 장치에 관한 것으로, 본 발명에 의한 네트워크 상의 텍스트 메시지를 처리하는 소스 코드 생성 방법은 데이터의 타입(Type), 변수명 등을 지정하기 위한 확장 규칙이 부가된 ABNF 소스 파일을 분석하여 모든 Rule들을 표현하기 위한 astRule 리스트를 생성하는 단계와, 확장 규칙을 이용하여 astRule 리스트에서 헤더 파일에 필요한 Rule들만을 추출하여 Rule 내의 각 element에 대한 align, size, offset을 포함한 정보를 규정한 GenRule 정보를 만들고, GenRule 정보를 이용하여 헤더 파일을 생성하는 단계와, astRule 리스트의 astRule을 하나의 NodeRule로 만들고 astRule 내의 astElement가 그룹 또는 옵션의 경우에도 별도의 NodeRule을 만들어 NodeRule 정보를 만들고, NodeRule 정보를 분석하여 디코딩 정보로 사용되는 ByteNode 정보를 만들고, ByteNode 정보를 이용하여 입력 텍스트 메시지를 디코딩하는 소스 파일을 생성하는 단계를 포함하여 구성된다. 본 발명에 의하면, 소스 코드 개발 기간이 획기적으로 단축되고, 프로그램의 유지보수가 용이해지며, 작성된 소스 코드에 대한 신뢰성을 확보할 수 있다는 효과가 있다.

Description

네트워크 상의 텍스트 메시지를 처리하는 소스 코드 생성 방법 및 그 장치{A source code generating method for processing text messages on network and apparatus thereof}
본 발명은 ABNF(Augmented Backus-Naur Form)로 기술된 텍스트 메시지를 처리하는 소스 코드를 생성하는 방법에 관한 것으로, 특히 확장 규칙(Extension Rules)이 부가된 ABNF 소스 파일을 자동으로 컴파일하여 네트워크 상의 텍스트 메시지에 대한 디코딩/인코딩/검증(Decoding/Encoding/Verifying) 기능을 수행하는 C 소스 코드를 생성하는 방법 및 그 장치에 관한 것이다.
네트워크로 연결된 두 정보처리장치 간에 통신을 할 경우 에러 없이 정보를 교환하기 위하여 제정된 규칙을 프로토콜이라고 하는데, SIP(Session Initiation Protocol), SDP(Session Description Protocol), RTSP(real time streaming protocol), MEGACO(media gateway control protocol)와 같은 텍스트 기반의 프로토콜을 사용하는 경우 전송 장치는 해당 정보를 텍스트 형태로 인코딩하여 전송하고, 수신 장치는 해당 정보를 수신하여 디코딩하여 사용한다.
이와 같은 텍스트 메시지를 디코딩/인코딩/검증하기 위하여 운영자는 해당 프로토콜에 대응하는 소스 코드를 직접 작성하여야 한다.
그런데, 텍스트 기반의 프로토콜은 BNF(Backus-Naur Form)가 변형된 형태인 ABNF(Augmented Backus-Naur Form)가 RFC 5234에 정의되어 있다. ABNF 구문(syntax)은 코어 규칙(Core Rules)과 ABNF Definition of ABNF로 구성되어 있다.
< 코어 규칙(Core Rules)>
ALPHA = %x41-5A / %x61-7A ; A-Z / a-z
BIT = "0" / "1"
CHAR = %x01-7F ; any 7-bit US-ASCII character, excluding NUL
CR = %x0D ; carriage return
CRLF = CR LF ; Internet standard newline
CTL = %x00-1F / %x7F ; controls
DIGIT = %x30-39 ; 0-9
DQUOTE = %x22 ; " (Double Quote)
HEXDIG = DIGIT / "A" / "B" / "C" / "D" / "E" / "F"
HTAB = %x09 ; horizontal tab
LF = %x0A ; linefeed
LWSP = *(WSP / CRLF WSP)
; linear white space (past newline)
OCTET = %x00-FF ; 8 bits of data
SP = %x20 space
VCHAR = %x21-7E visible (printing) characters
WSP = SP / HTAB ; white space
<ABNF Definition of ABNF>
rulelist = 1*( rule / (*c-wsp c-nl) )
rule = rulename defined-as elements c-nl
; continues if next line starts with white space
rulename = ALPHA *(ALPHA / DIGIT / "-")
defined-as = *c-wsp ("=" / "=/") *c-wsp
; basic rules definition and incremental alternatives
elements = alternation *c-wsp
c-wsp = WSP / (c-nl WSP)
c-nl = comment / CRLF
; comment or newline
comment = ";" *(WSP / VCHAR) CRLF
alternation = concatenation *(*c-wsp "/" *c-wsp concatenation)
concatenation = repetition *(1*c-wsp repetition)
repetition = [repeat] element
repeat = 1*DIGIT / (*DIGIT "*" *DIGIT)
element = rulename / group / option /char-val / num-val / prose-val
group = "(" *c-wsp alternation *c-wsp ")"
option = "[" *c-wsp alternation *c-wsp "]"
char-val = DQUOTE *(%x20-21 / %x23-7E) DQUOTE
; quoted string of SP and VCHAR without DQUOTE
num-val = "%" (bin-val / dec-val / hex-val)
bin-val = "b" 1*BIT [ 1*("." 1*BIT) / ("-" 1*BIT) ]
; series of concatenated bit values or single ONEOF range
dec-val = "d" 1*DIGIT [ 1*("." 1*DIGIT) / ("-" 1*DIGIT) ]
hex-val = "x" 1*HEXDIG [ 1*("." 1*HEXDIG) / ("-" 1*HEXDIG) ]
prose-val = "<" *(%x20-3D / %x3F-7E) ">"
; bracketed string of SP and VCHAR without angles
; prose description, to be used as last resort
상기한 바와 같은 ABNF 구문으로 작성된 프로토콜에는 데이터의 타입(Type), 변수명 등이 지정되어 있지 않기 때문에, 해당 프로토콜에 대응하는 디코딩/인코딩/검증을 위한 소스 코드를 작성하기 위해서는 종래에는 운영자가 직접 코딩을 수행 하였다. 따라서, 소스 코드 개발에 필요한 기간이 오래 걸리게 되고, 새로운 기능을 추가할 때 프로그램을 유지/보수하기가 어려웠고, 작성된 소스 코드에 오류가 발생할 가능성이 높다는 문제점이 있었다.
본 발명은 상기의 문제점들을 해결하기 위하여 창안된 것으로, ABNF 소스 파일에 데이터의 타입(Type), 변수명 등을 지정하기 위한 확장 규칙(Extension Rules)을 부가하고, 확장 규칙이 부가된 ABNF 소스 파일을 컴파일하여 네트워크 상의 텍스트 메시지에 대한 디코딩/인코딩/검증(Decoding/Encoding/Verifying) 기능을 수행하는 C 소스 코드를 자동으로 생성하는 방법 및 그 방법이 적용된 장치를 제공함을 목적으로 한다.
상기의 목적들을 달성하기 위하여, 본 발명에 의한 네트워크 상의 텍스트 메시지를 처리하는 소스 코드 생성 방법은 (a) 데이터의 타입(Type), 변수명 등을 지정하기 위한 확장 규칙이 부가된 ABNF 소스 파일을 분석하여 모든 Rule들을 표현하기 위한 astRule 리스트를 생성하는 단계; (b) 상기 확장 규칙을 이용하여 상기 astRule 리스트에서 헤더 파일에 필요한 Rule들만을 추출하여 Rule 내의 각 element에 대한 align, size, offset을 포함한 정보를 규정한 GenRule 정보를 만들고, 상기 GenRule 정보를 이용하여 헤더 파일을 생성하는 단계; 및 (c) 상기 astRule 리스트의 astRule을 하나의 NodeRule로 만들고 astRule 내의 astElement가 그룹 또는 옵션의 경우에도 별도의 NodeRule을 만들어 NodeRule 정보를 만들고, 상기 NodeRule 정보를 분석하여 디코딩 정보로 사용되는 ByteNode 정보를 만들고, 상기 ByteNode 정보를 이용하여 입력 텍스트 메시지를 디코딩하는 소스 파일을 생성하는 단계;를 포함하여 구성된다.
또한, 상기의 다른 목적을 달성하기 위하여, 데이터의 타입, 변수명 등을 지정하기 위한 확장 규칙이 부가된 ABNF 소스 파일에 의해 텍스트 메시지를 처리하는 소스 코드 생성하는 장치는, 확장 규칙이 부가된 ABNF 소스 파일을 분석하여 모든 Rule들을 표현하기 위한 astRule 리스트를 생성하는 룰 리스트 생성부; 상기 확장 규칙을 이용하여 상기 astRule 리스트에서 헤더 파일에 필요한 Rule들만을 추출하여 Rule 내의 각 element에 대한 align, size, offset을 포함한 정보를 규정한 GenRule 정보를 만들고, 상기 GenRule 정보를 이용하여 헤더 파일을 생성하는 헤더 파일 생성부; 및 상기 astRule 리스트의 astRule을 하나의 NodeRule로 만들고 astRule 내의 astElement가 그룹 또는 옵션의 경우에도 별도의 NodeRule을 만들어 NodeRule 정보를 만들고, 상기 NodeRule 정보를 분석하여 디코딩 정보로 사용되는 ByteNode 정보를 만들고, 상기 ByteNode 정보를 이용하여 입력 텍스트 메시지를 디코딩하는 소스 파일을 생성하는 소스 파일 생성부;를 포함하여 구성된다.
이상 설명한 바와 같이 본 발명에 따르면, 운영자가 직접 코딩을 하지 않더라도, ABNF 소스 파일에 확장 규칙(Extension Rules)만을 부가하여 컴파일함으로써 자동적으로 네트워크 상의 텍스트 메시지에 대한 디코딩/인코딩/검 증(Decoding/Encoding/Verifying) 기능을 수행하는 C 소스 코드를 생성하게 됨으로써, 소스 코드 개발 기간이 획기적으로 단축되고, 프로그램의 유지보수가 용이해지며, 작성된 소스 코드에 대한 신뢰성을 확보할 수 있다는 효과가 있다.
이하에서는 첨부도면을 참조하여 본 발명에 대해 상세히 설명한다.
ABNF 구문으로 작성된 프로토콜에는 데이터의 타입(Type), 변수명 등이 지정되어 있지 않기 때문에, 본 발명에 의한 네트워크 상의 텍스트 메시지를 처리하는 소스 코드 생성 장치는 ABNF 소스 파일만으로는 자동으로 컴파일하지 못한다.
따라서 컴파일을 위해 ABNF 소스 파일에는 다음과 같은 제약이 필요하다.
<ABNF 제약(restriction)>
● Alternation은 sequence보다 더 높은 우선순위(precedence)를 가진다.
즉, A = B EQUAL "ON" / "OFF" 는 A = (B EQUAL "ON") / "OFF" 와 같이 해석된다.
다음과 같은 해석을 위해서는 꼭 괄호가 필요하다.
A = B EQUAL ( "ON" / "OFF" )
● 하나의 Rule이 끝나는 것을 구분하여 알기 위해 세미콜론(;)을 사용하며, 사용자 편의를 위한 데이터 Type, 변수명 등을 지정하여 주기 위해 별도의 확장 규칙(Extension Rules)(;--X…..)을 적용한다.
● 각 Rule은 index 0을 가지고, right side는 element를 기준으로 1부터 순 서대로 index를 가진다. Alternation과 repeater는 index를 안 가지게 된다.
● bin-val, dec-val, hex-val의 경우, concatenation의 최대 시리즈(series)는 80이다.
● Rule은 Union 내에 하나보다 많은 element를 지원하지 않고, Union 내에 optional element를 지원하지도 않는다.
따라서 Rule A = B | C [D] | E은 다음과 같이 변경되어야 한다.
A = B | AA | E
AA = C [D]
● Rule은 ";" string 또는 ";--X" extend rule string으로 종료된다.
";" string에서 EOL까지는 코멘트로 간주된다.
";--X" string에서 EOL까지는 확장 규칙(Extension Rule)으로 간주된다.
ABNF 소스 파일에 부가되는 확장 규칙(Extension Rules)을 예로 들면 다음과 같다.
<확장 규칙(Extension Rules)>
● XPDU
Encode/Decode를 수행하는 Rule 임을 나타낸다.
Ex) StartLine = *CRLF ( StatusLine / ReqLine)
--XPDU
● XCUT
struct 생성에만 사용되고, 사용자 struct에는 나타나지 않는다.
만약 cutId 가 0 이면, 그 Rule은 사용자 헤더 파일에 생성되지 아니한다(여기서 cutId는 index를 나타낸다).
Ex) --XCUT cutId0, cutId1, cutId2, ...
● XTYPE
type 명을 지정하는데, 디폴트(default) 값은 struct이다.
typename : structl, struct, uint, ushort, char*, char, uchar, enum,
octet(num), octet, char(num), objId, bit, float, boolean, null, char*esc
Ex) --XTYPE typeId1= typename
(여기서 typeId는 index를 나타낸다)
● XVAR
Var 명을 지정한다.
Ex) --XVAR nameId1=nameVal1, nameId2=nameVal2, ...
(여기서 typeId는 index를 나타낸다)
● XCHOICE, XCHOICE_S
choice 명을 지정한다.
Ex) --XCHOICE nameId1=nameVal1, nameId2=nameVal2, ...
--XCHOICE_S 2,3,4
(여기서 nameId는 index를 나타낸다)
도 1을 참조하면, 본 발명에 의한 네트워크 상의 텍스트 메시지를 처리하는 소스 코드 생성 장치(이하 "ABNF 컴파일러"라 한다)의 바람직한 실시예는, 룰 리스트 생성부(10), 헤더 파일 생성부(20) 및 소스 파일 생성부(30)를 포함하는데, 각 구성부는 정보 처리 장치(예를 들어, 개인용 컴퓨터)에 구비된 프로세서(도시되지 아니함) 및 관련 소프트웨어의 결합체로서 구현된다. 도 2는 ABNF 컴파일러가 처리하는 주요 데이터 구조를 예시적으로 도시한 것이다.
본 발명에 의한 ABNF 컴파일러는 데이터의 타입, 변수명 등을 지정하기 위한 확장 규칙이 부가된 ABNF 소스 파일(SIP, SDP, RTSP, MEGACO와 같은 텍스트 기반의 프로토콜을 ABNF에 의해 기술한 파일)입력으로 하여, 텍스트 메시지를 처리하는 소스 코드 즉, C 헤더 파일(확장자 .h를 갖는 파일) 및 C 소스 파일(확장자 .c를 갖는 파일)을 자동으로 생성한다.
룰 리스트 생성부(10)는 확장 규칙이 부가된 ABNF 소스 파일을 분석하여 모든 Rule들을 표현하기 위한 astRule 리스트와 확장 규칙 정보를 생성하는데, Lex 모듈(12)과 Yacc 모듈(14)을 구비한다.
Lex 모듈(12)은 ABNF 소스 파일을 다음과 같은 토큰의 형태로 분석한다.
S_ALTERNATION : A | B | C
S_DQUOTE : "abc"
S_ANGLE : <def>
S_BRACE : {ghi}
S_BINVAL : %b
S_DECVAL : %d
S_HEXVAL : %x
Yacc 모듈(14)은 ABNF 소스 파일에 부가된 확장 규칙(;--X....)과 Lex 모듈(12)이 분석한 토큰 정보를 이용하여 astRule 리스트를 생성한다.
astRule의 구조는 astAlternation 리스트로 표현된다.
(Rule1 = Alt1 | Alt2 | Alt3)
astAlternation의 구조는 astElement 리스트로 표현된다.
astElement의 구조는 Rule 또는 Group 또는 Option 또는 Char-Val 또는 Num-Val의 형태로 구성되는데, Rule은 다른 astRule을 지칭하며, Group 또는 Option은 astAlternation 리스트로 표현된다.
ABNF 소스 파일에 부가된 확장 규칙(;--X....)에 대한 정보는 astRule 리스트에 부가되거나 별도의 데이터 구조로 관리될 수도 있다.
헤더 파일 생성부(20)는 --XCUT과 같은 확장 규칙을 이용하여 astRule 리스트에서 헤더 파일에 필요한 Rule들만을 추출하여 Rule 내의 각 element에 대한 align, size, offset을 포함한 정보를 규정한 GenRule 정보를 만든다. 또한, 헤더 파일 생성부(20)는 GenRule 정보를 이용하여 헤더 파일을 생성한다.
헤더 파일 생성부(20)는 GenRule 정보를 이용하여 헤더 파일을 생성할 때, 여러 개의 element 중 1개로 선택되어지는 것을 표현하기 위하여 union 형태로 표 시하고, 하나의 element로서만 선택되어지는 경우에는 optional일 수 있다.
헤더 파일 생성부(20)는 헤더 파일 생성 시에는 확장 규칙에서 --XTYPE로 정의된 데이터 타입으로 만드는 기능을 가진다.
소스 파일 생성부(30)는 astRule 리스트의 astRule을 하나의 NodeRule로 만들고 astRule 내의 astElement가 그룹 또는 옵션의 경우에도 별도의 NodeRule을 만들어 NodeRule 정보를 만든다. 또한, 소스 파일 생성부(30)는 NodeRule 정보를 분석하여 디코딩 정보로 사용되는 ByteNode 정보를 만든다. 이때, 먼저 1라운드에서는 모든 NodeRule 중 Char-Val 또는 Num-Val 형태, 즉 다른 NodeRule을 참조하지 않는 NodeRule부터 분석함으로써 ByteNode를 만들고, 다음으로 1라운드에서 분석된 NodeRule을 이용하여 2라운드의 ByteNode를 만들고, 이를 반복 수행하여 모든 NodeRule을 분석하여 ByteNode 정보를 완성한다.
각 ByteNode는 다음 중 하나로 결정되어진다.
ByteAlt : Alternation의 정보로 디코딩 시에 바이트 이동 없이 검사를 수행하기 위한 바이트
BytePtr : Rule의 시작을 나타내는 바이트
BytePte : Rule의 끝을 나타내는 바이트
ByteElr : Element의 시작을 나타내는 바이트
ByteEle : Element의 끝을 나타내는 바이트
ByteSng : 디코딩 시에 토큰 값 형태로 나타내어지는 값을 PDU의 오프셋(Offset) 값을 계산하며 적당한 형태의 포맷으로 채워 넣는 시점을 알려주는 바 이트
ByteCar : 바이트 단위로 검사를 수행하기 위한 256 바이트 short array 값
ByteRca : 바이트 단위로 검사를 수행하는 것은 ByteCar와 동일하나 반복자를 가지는 것
ByteLst : structl Type에서 반복자의 delimiter가 없는 경우 이를 확장 규칙으로 알려 주는데 이 정보를 나타내는 바이트
ByteSkp : 주어진 길이 만큼 이동하여야 함을 알려주는 바이트
소스 파일 생성부(30)는 ByteNode 정보를 이용하여 --XPDU로 정의된 Rule을 디코딩/검증(Decoding/Verifying)하는 함수를 생성함으로써 입력 텍스트 메시지를 디코딩/검증하는 것이 가능하게 된다. 텍스트 메시지를 인코딩하는 기능은 헤더 파일 생성부(20)에 의해 생성된 헤더 파일을 사용함으로써 간단히 구현될 수 있다.
이하에서 도 3을 참조하여, 본 발명에 의한 네트워크 상의 텍스트 메시지를 처리하는 소스 코드 생성 과정을 상세히 설명하기로 한다.
먼저, ABNF 컴파일러는 데이터의 타입(Type), 변수명 등을 지정하기 위한 확장 규칙이 부가된 ABNF 소스 파일을 분석하여 모든 Rule들을 표현하기 위한 astRule 리스트를 생성한다(S10 단계). 도 4는 astRule 리스트의 예시적인 데이터 구조를 도시한다. ABNF 컴파일러는 확장 규칙을 분석하여 별도의 데이터 구조에 할당할 수 있는데, 도 5는 확장 규칙 정보의 예시적인 데이터 구조를 도시한다.
다음 ABNF 컴파일러는 확장 규칙을 이용하여 astRule 리스트에서 헤더 파일 에 필요한 Rule들만을 추출하여 Rule 내의 각 element에 대한 align, size, offset을 포함한 정보를 규정한 GenRule 정보를 만들고, GenRule 정보를 이용하여 헤더 파일을 생성한다(S20 단계). 도 6은 GenRule 정보의 예시적인 데이터 구조를 도시한다. ABNF 컴파일러는 GenRule 정보를 이용하여 헤더 파일을 생성할 때, 여러 개의 element 중 1개로 선택되어지는 것을 표현할 수 있는 GenMEle는 union 형태로 표시하고, 하나의 element로서만 선택되어지는 경우에는 GenSEle로 구분되어지며, GenSEle인 경우에는 optional일 수 있다.
ABNF 컴파일러는 astRule 리스트의 astRule을 하나의 NodeRule로 만들고 astRule 내의 astElement가 그룹 또는 옵션의 경우에도 별도의 NodeRule을 만들어 NodeRule 정보를 만들고, 상기 NodeRule 정보를 분석하여 디코딩 정보로 사용되는 ByteNode 정보를 만든다. 이때, 먼저 1라운드에서는 모든 NodeRule 중 Char-Val 또는 Num-Val 형태, 즉 다른 NodeRule을 참조하지 않는 NodeRule부터 분석함으로써 ByteNode를 만들고, 다음으로 1라운드에서 분석된 NodeRule을 이용하여 2라운드의 ByteNode를 만들고, 이를 반복 수행하여 모든 NodeRule을 분석하여 ByteNode 정보를 완성한다. ABNF 컴파일러는 ByteNode 정보를 이용하여 입력 텍스트 메시지를 디코딩하는 소스 파일을 생성한다(S30 단계).
이하는 ABNF 컴파일러에 구비된 Lex 모듈의 일실시예를 기재한 것이다.
%start S_ALTERNATION S_DQUOTE S_ANGLE S_BRACE S_BINVAL S_DECVAL S_HEXVAL
/*=====================================================================
// rule section
// RULENAME permit "_" symbol
//====================================================================*/
%%
<INITIAL>;--X.*$
{uLogTcp(LOG_DEB3,"INITIAL XRULE:(%s)", yytext);
TcAstSym* sym = new TcAstSym(yytext, yyleng);
yylval.sym = sym;
return T_XRULE;}
<INITIAL>;.*$
{uLogTcp(LOG_DEB3,"INITIAL COMMENT:(%s)", yytext);}
<S_ALTERNATION>;--X.*$
{uLogTcp(LOG_DEB3,"S_ALTERNATION XRULE:(%s)", yytext);
TcAstSym* sym = new TcAstSym(yytext, yyleng);
yylval.sym = sym;
BEGIN(INITIAL);
return T_XRULE;}
<S_ALTERNATION>;.*$
{uLogTcp(LOG_DEB3,"S_ALTERNATION COMMENT:(%s)", yytext);
BEGIN(INITIAL);
return T_COMMENT;}
<INITIAL>[a-zA-Z][a-zA-Z0-9_-]*
{uLogTcp(LOG_DEB3,"===================RULENAME:(%s)", yytext);
TcAstSym* sym = new TcAstSym(yytext, yyleng);
yylval.sym = sym;
return T_RULENAME;}
<S_ALTERNATION>[a-zA-Z][a-zA-Z0-9_-]*
{uLogTcp(LOG_DEB3,"RULEREF:(%s)", yytext);
TcAstSym* sym = new TcAstSym(yytext, yyleng);
yylval.sym = sym;
return T_RULEREF;}
<INITIAL>[ \t]
{}
<S_ALTERNATION>[ \t]
{}
<INITIAL>"="
{uLogTcp(LOG_DEB3,"EQUAL:(%s)",yytext); BEGIN(S_ALTERNATION);
return T_EQUAL;}
<INITIAL>"=/"
{uLogTcp(LOG_DEB3,"INCEQUAL:(%s)",yytext); BEGIN(S_ALTERNATION);
return T_INCEQUAL;}
"\n"
{uLogTcp(LOG_DEB3,"NEWLINE:LineNum(%d)", yylineno);
TcEntity::sLineNo++;}
<S_ALTERNATION>"/"|"|"
{uLogTcp(LOG_DEB3,"ALTERNATION:(%s)", yytext); return T_ALTERNATION;}
<S_ALTERNATION>"("
{uLogTcp(LOG_DEB3,"LPAREN:(%s)", yytext); return T_LPAREN;}
<S_ALTERNATION>")"
{uLogTcp(LOG_DEB3,"RPAREN:(%s)", yytext) return T_RPAREN;}
<S_ALTERNATION>"["
{uLogTcp(LOG_DEB3,"LBRACKET:(%s)", yytext); return T_LBRACKET;}
<S_ALTERNATION>"]"
{uLogTcp(LOG_DEB3,"RBRACKET:(%s)", yytext); return T_RBRACKET;}
<S_ALTERNATION>"<"
{uLogTcp(LOG_DEB3,"LBRACKET:(%s)", yytext); return T_LANGLE;}
<S_ALTERNATION>">"
{uLogTcp(LOG_DEB3,"RBRACKET:(%s)", yytext); return T_RANGLE;}
<S_ALTERNATION>"{"
{uLogTcp(LOG_DEB3,"LBRACE:(%s)", yytext); return T_LBRACE;}
<S_ALTERNATION>"}"
{uLogTcp(LOG_DEB3,"RBRACE:(%s)", yytext); return T_RBRACE;}
<S_ALTERNATION>[0-9]*(\*|#)?[0-9]*
{uLogTcp(LOG_DEB3,"REPEAT:(%s)", yytext);
TcAstSym* sym = new TcAstSym(yytext, yyleng);
yylval.sym = sym;
return T_REPEAT;}
<S_ALTERNATION>"\""
{uLogTcp(LOG_DEB3,"DQUOTE:S_ALTERNATION(%s)", yytext);
BEGIN(S_DQUOTE);
return T_DQUOTE;}
<S_DQUOTE>[^"]*
{uLogTcp(LOG_DEB3,"WDQUOTE:S_DQUOTE(%s)", yytext);
TcAstSym* sym = new TcAstSym(yytext, yyleng);
yylval.sym = sym;
return T_WDQUOTE;}
<S_DQUOTE>"\""
{uLogTcp(LOG_DEB3,"DQUOTE:S_DQUOTE(%s)", yytext);
BEGIN(S_ALTERNATION);
return T_DQUOTE;}
<S_ALTERNATION>"%b"|"%B"
{uLogTcp(LOG_DEB3,"PERBIN:(%s)", yytext);
BEGIN(S_BINVAL);return T_PERBIN;}
<S_ALTERNATION>"%d"|"%D"
{uLogTcp(LOG_DEB3,"PERDEC:(%s)", yytext);
BEGIN(S_DECVAL);return T_PERDEC;}
<S_ALTERNATION>"%x"|"%X"
{uLogTcp(LOG_DEB3,"PERHEX:(%s)", yytext);
BEGIN(S_HEXVAL);return T_PERHEX;}
<S_BINVAL>[0-1]+[.0-1-]*
{uLogTcp(LOG_DEB3,"BINVAL:(%s)", yytext);
TcAstSym* sym = new TcAstSym(yytext, yyleng);
yylval.sym = sym;
BEGIN(S_ALTERNATION);
return T_BINVAL;}
<S_DECVAL>[0-9]+[.0-9-]*
{uLogTcp(LOG_DEB3,"DECVAL:(%s)", yytext);
TcAstSym* sym = new TcAstSym(yytext, yyleng);
yylval.sym = sym;
BEGIN(S_ALTERNATION);
return T_DECVAL;}
<S_HEXVAL>[0-9A-Fa-f]+[.0-9A-Fa-f-]*
{uLogTcp(LOG_DEB3,"HEXVAL:(%s)", yytext);
TcAstSym* sym = new TcAstSym(yytext, yyleng);
yylval.sym = sym;
BEGIN(S_ALTERNATION);
return T_HEXVAL;}
%%
이하는 ABNF 컴파일러에 구비된 Yacc 모듈의 일실시예를 기재한 것이다.
%token T_COMMENT
%token T_EQUAL T_INCEQUAL
%token T_ALTERNATION
%token T_LPAREN T_RPAREN T_LBRACKET T_RBRACKET
%token T_LANGLE T_RANGLE T_LBRACE T_RBRACE
%token T_DQUOTE
%token T_PERBIN T_PERDEC T_PERHEX
%union {
TcAstRule* rule;
TcAstAltList* altList;
TcAstAlt* alt;
TcAstEle* ele;
TcAstSym* sym;
}
%token <sym> T_XRULE T_RULENAME T_RULEREF T_REPEAT T_WDQUOTE
%token <sym> T_BINVAL T_DECVAL T_HEXVAL
%type <rule> rule
%type <altList> altList
%type <alt> alt
%type <ele> ele
%start ruleHash
/*===================================================================
//
//===================================================================*/
%%
ruleHash : rule T_COMMENT
{ uLogTcp(LOG_DEB2,"[%d rule(%p) T_COMMENT]", TcEntity::sLineNo, $1);
TcEntity::sXRefRule = $1;
}
| ruleHash rule T_COMMENT
{ uLogTcp(LOG_DEB2,"[%d rule(%p) T_COMMENT]", TcEntity::sLineNo, $2);
TcEntity::sXRefRule = $2;
}
| rule T_XRULE
{ uLogTcp(LOG_DEB2,"[%d rule(%p) T_XRULE(%s)]",
TcEntity::sLineNo, $1, $2->mSymData);
TcEntity::sXRefRule = $1;
GenString* str = new GenString($2->mSymData+3);
TcEntity::sXRefRule->mXRuleList->endPush(&str);
}
| ruleHash rule T_XRULE
{ uLogTcp(LOG_DEB2,"[%d rule(%p) T_XRULE(%s)]",
TcEntity::sLineNo, $2, $3->mSymData);
TcEntity::sXRefRule = $2;
GenString* str = new GenString($3->mSymData+3);
TcEntity::sXRefRule->mXRuleList->endPush(&str);
}
| ruleHash T_XRULE
{ uLogTcp(LOG_DEB2,"[%d NULLRULE T_XRULE(%s)]",
TcEntity::sLineNo, $2->mSymData);
GenString* str = new GenString($2->mSymData+3);
TcEntity::sXRefRule->mXRuleList->endPush(&str);
}
| T_XRULE
{ uLogTcp(LOG_DEB2,"[%d NULLRULE T_XRULE(%s)]",
TcEntity::sLineNo, $1->mSymData);
exit(1);
}
rule : T_RULENAME T_EQUAL
{ $$ = 0;
uLogTcp(LOG_DEB2,"[%d rule:T_RULENAME(%s) T_EQUAL]",
TcEntity::sLineNo, $1->mSymData);
exit(1);
}
| T_RULENAME T_EQUAL altList
{ $$ = new TcAstRule($1->mSymData, $3);
TcEntity::sEqual($$);
uLogTcp(LOG_DEB2, "[%d rule(%p):T_RULENAME(%s) T_EQUAL altList(%p)]",
TcEntity::sLineNo, $$, $1->mSymData, $3);
}
| T_RULENAME T_INCEQUAL altList
{ $$ = TcEntity::sIncEqual($1->mSymData, $3);
uLogTcp(LOG_DEB2,
"[%d rule(%p):T_RULENAME(%s) T_INCEQUAL altList(%p)]",
TcEntity::sLineNo, $$, $1->mSymData, $3);
}
altList : alt
{ $$ = new TcAstAltList();
$$->endPush(&$1);
uLogTcp(LOG_DEB2,"[%d altList(%p):NEW alt(%p)]",
TcEntity::sLineNo, $$, $1);
}
| altList T_ALTERNATION alt
{ $1->endPush(&$3);
$$ = $1;
uLogTcp(LOG_DEB2,
"[%d altList(%p):ADD alt(%p)]", TcEntity::sLineNo, $$, $3);
}
alt : T_REPEAT ele
{ $$ = new TcAstAlt($1->mSymData, $2);
uLogTcp(LOG_DEB2, "[%d alt(%p):NEW repeat ele(%s,%s)]",
TcEntity::sLineNo, $$, $1->mSymData, $2->mSymData);
}
| ele
{ $$ = new TcAstAlt((xc8*)"1", $1);
uLogTcp(LOG_DEB2, "[%d alt(%p):NEW ele(%s)]",
TcEntity::sLineNo, $$, $1->mSymData);
}
| alt T_REPEAT ele
{ $1->mAddEle($2->mSymData, $3);
$$ = $1;
uLogTcp(LOG_DEB2, "[%d alt(%p):ADD repeat ele(%s,%s)]",
TcEntity::sLineNo, $$, $2->mSymData, $3->mSymData);
}
| alt ele
{ $1->mAddEle((xc8*)"1", $2);
$$=$1;
uLogTcp(LOG_DEB2, "[%d alt(%p):ADD ele(%s)]",
TcEntity::sLineNo, $$, $2->mSymData);
}
ele : T_RULEREF
{ $$ = new TcAstEle(TcRuleRef_chosen, $1->mSymData);
uLogTcp(LOG_DEB3, "[%d elment(%p):T_RULEREF(%s)]",
TcEntity::sLineNo, $$, $1->mSymData);
}
| T_LPAREN altList T_RPAREN
{ xc8 symData[80];
sprintf(symData, "PAREN_%d", TcEntity::sSymIdx++);
$$ = new TcAstEle(TcParen_chosen, symData, $2);
uLogTcp(LOG_DEB3, "[%d ele(%p):PAREN altList(%p)]",
TcEntity::sLineNo, $$, $2);
}
| T_LBRACKET altList T_RBRACKET
{ xc8 symData[80];
sprintf(symData, "BRACKET_%d", TcEntity::sSymIdx++);
$$ = new TcAstEle(TcBracket_chosen, symData, $2);
uLogTcp(LOG_DEB3, "[%d ele(%p):BRACKET altList(%p)]",
TcEntity::sLineNo, $$, $2);
}
| T_LANGLE altList T_RANGLE
{ xc8 symData[80];
sprintf(symData, "ANGLE_%d", TcEntity::sSymIdx++);
$$ = new TcAstEle(TcAngle_chosen, symData, $2);
uLogTcp(LOG_DEB3, "[%d ele(%p):ANGLE(%s) altList(%p)]",
TcEntity::sLineNo, $$, $2);
}
| T_LBRACE altList T_RBRACE
{ xc8 symData[80];
sprintf(symData, "BRACE_%d", TcEntity::sSymIdx++);
$$ = new TcAstEle(TcBrace_chosen, (xc8*)"BRACE", $2);
uLogTcp(LOG_DEB3, "[%d ele(%p):BRACE(%s) altList(%p)]",
TcEntity::sLineNo, $$, $2);
}
| T_DQUOTE T_WDQUOTE T_DQUOTE
{ $$ = new TcAstEle(TcDQuote_chosen, $2->mSymData);
uLogTcp(LOG_DEB3, "[%d ele(%p):T_WDQUOTE(%s)]",
TcEntity::sLineNo, $$, $2->mSymData);
}
| T_PERBIN T_BINVAL
{ $$ = new TcAstEle(TcBinVal_chosen, $2->mSymData);
uLogTcp(LOG_DEB3, "[%d ele(%p):T_BINVAL(%s)]",
TcEntity::sLineNo, $$, $2->mSymData);
}
| T_PERDEC T_DECVAL
{ $$ = new TcAstEle(TcDecVal_chosen, $2->mSymData);
uLogTcp(LOG_DEB3, "[%d ele(%p):T_DECVAL(%s)]",
TcEntity::sLineNo, $$, $2->mSymData);
}
| T_PERHEX T_HEXVAL
{ $$ = new TcAstEle(TcHexVal_chosen, $2->mSymData);
uLogTcp(LOG_DEB3, "[%d ele(%p):T_HEXVAL(%s)]",
TcEntity::sLineNo, $$, $2->mSymData);
}
%%
한편, 상술한 본 발명의 실시예는 개인용 컴퓨터를 포함한 범용 컴퓨터에서 사용되는 매체에 기록될 수 있다. 상기 매체는 마그네틱 기록매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독매체(예를 들면, 씨디롬, 디브이디 등), 전기적 기록매체(예를 들면, 플레쉬 메모리, 메모리 스틱 등) 및 캐리어 웨이브(예를 들면, 인터넷을 통한 전송)와 같은 기록매체를 포함한다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
도 1은 본 발명에 의한 네트워크 상의 텍스트 메시지를 처리하는 소스 코드 생성 장치의 전체적인 구성을 도시한 블록도이다.
도 2는 ABNF 컴파일러가 처리하는 주요 데이터 구조를 예시적으로 도시한 것이다.
도 3은 본 발명에 의한 네트워크 상의 텍스트 메시지를 처리하는 소스 코드 생성 방법을 도시한 흐름도이다.
도 4는 astRule 리스트의 예시적인 데이터 구조를 도시한 것이다.
도 5는 확장 규칙 정보의 예시적인 데이터 구조를 도시한 것이다.
도 6은 GenRule 정보의 예시적인 데이터 구조를 도시한 것이다.
* 도면의 주요 부분에 대한 부호의 설명
10 : 룰 리스트 생성부 20 : 헤드 파일 생성부
30 : 소스 파일 생성부

Claims (7)

  1. (a) 데이터의 타입(Type), 변수명 등을 지정하기 위한 확장 규칙이 부가된 ABNF 소스 파일을 분석하여 모든 Rule들을 표현하기 위한 astRule 리스트를 생성하는 단계;
    (b) 상기 확장 규칙을 이용하여 상기 astRule 리스트에서 헤더 파일에 필요한 Rule들만을 추출하여 Rule 내의 각 element에 대한 align, size, offset을 포함한 정보를 규정한 GenRule 정보를 만들고, 상기 GenRule 정보를 이용하여 헤더 파일을 생성하는 단계; 및
    (c) 상기 astRule 리스트의 astRule을 하나의 NodeRule로 만들고 astRule 내의 astElement가 그룹 또는 옵션의 경우에도 별도의 NodeRule을 만들어 NodeRule 정보를 만들고, 상기 NodeRule 정보를 분석하여 디코딩 정보로 사용되는 ByteNode 정보를 만들고, 상기 ByteNode 정보를 이용하여 입력 텍스트 메시지를 디코딩하는 소스 파일을 생성하는 단계;를 포함함을 특징으로 하는 네트워크 상의 텍스트 메시지를 처리하는 소스 코드 생성 방법.
  2. 제1항에 있어서, 상기 (b) 단계는
    상기 GenRule 정보를 이용하여 헤더 파일을 생성할 때, 여러 개의 element 중 1개로 선택되어지는 것을 표현하기 위하여 union 형태로 표시하는 것을 특징으로 하는 네트워크 상의 텍스트 메시지를 처리하는 소스 코드 생성 방법.
  3. 삭제
  4. 제1항 또는 제2항의 방법이 구현된 프로그램을 기록한 컴퓨터가 읽을 수 있는 기록매체.
  5. 데이터의 타입, 변수명 등을 지정하기 위한 확장 규칙이 부가된 ABNF 소스 파일에 의해 텍스트 메시지를 처리하는 소스 코드 생성하는 장치에 있어서,
    확장 규칙이 부가된 ABNF 소스 파일을 분석하여 모든 Rule들을 표현하기 위 한 astRule 리스트를 생성하는 룰 리스트 생성부;
    상기 확장 규칙을 이용하여 상기 astRule 리스트에서 헤더 파일에 필요한 Rule들만을 추출하여 Rule 내의 각 element에 대한 align, size, offset을 포함한 정보를 규정한 GenRule 정보를 만들고, 상기 GenRule 정보를 이용하여 헤더 파일을 생성하는 헤더 파일 생성부; 및
    상기 astRule 리스트의 astRule을 하나의 NodeRule로 만들고 astRule 내의 astElement가 그룹 또는 옵션의 경우에도 별도의 NodeRule을 만들어 NodeRule 정보를 만들고, 상기 NodeRule 정보를 분석하여 디코딩 정보로 사용되는 ByteNode 정보를 만들고, 상기 ByteNode 정보를 이용하여 입력 텍스트 메시지를 디코딩하는 소스 파일을 생성하는 소스 파일 생성부;를 포함함을 특징으로 하는 네트워크 상의 텍스트 메시지를 처리하는 소스 코드 생성 장치.
  6. 제5항에 있어서, 상기 헤더 파일 생성부는
    상기 GenRule 정보를 이용하여 헤더 파일을 생성할 때, 여러 개의 element 중 1개로 선택되어지는 것을 표현하기 위하여 union 형태로 표시하는 것을 특징으로 하는 네트워크 상의 텍스트 메시지를 처리하는 소스 코드 생성 장치.
  7. 삭제
KR1020090017892A 2009-03-03 2009-03-03 네트워크 상의 텍스트 메시지를 처리하는 소스 코드 생성 방법 및 그 장치 KR100908889B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020090017892A KR100908889B1 (ko) 2009-03-03 2009-03-03 네트워크 상의 텍스트 메시지를 처리하는 소스 코드 생성 방법 및 그 장치
PCT/KR2009/002070 WO2010101327A1 (ko) 2009-03-03 2009-04-21 네트워크 상의 텍스트 메시지를 처리하는 소스 코드 생성방법 및 그 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090017892A KR100908889B1 (ko) 2009-03-03 2009-03-03 네트워크 상의 텍스트 메시지를 처리하는 소스 코드 생성 방법 및 그 장치

Publications (1)

Publication Number Publication Date
KR100908889B1 true KR100908889B1 (ko) 2009-07-23

Family

ID=41337870

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090017892A KR100908889B1 (ko) 2009-03-03 2009-03-03 네트워크 상의 텍스트 메시지를 처리하는 소스 코드 생성 방법 및 그 장치

Country Status (2)

Country Link
KR (1) KR100908889B1 (ko)
WO (1) WO2010101327A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140052459A (ko) * 2012-10-24 2014-05-07 삼성에스디에스 주식회사 Odbc프로그램 자동 코딩 방법
CN110377276A (zh) * 2019-07-19 2019-10-25 潍柴动力股份有限公司 源代码文件管理方法及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040045143A (ko) * 2002-11-22 2004-06-01 엘지전자 주식회사 소스코드 생성 방법
US20080295069A1 (en) 2007-05-21 2008-11-27 International Business Machines Corporation User-extensible rule-based source code modification

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004252841A (ja) * 2003-02-21 2004-09-09 Denso Corp ソースコード生成装置、ソースコード生成プログラム、およびソースコード生成方法
JP2007304998A (ja) * 2006-05-12 2007-11-22 Hitachi Software Eng Co Ltd ソースコード生成方法及び装置並びにプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040045143A (ko) * 2002-11-22 2004-06-01 엘지전자 주식회사 소스코드 생성 방법
US20080295069A1 (en) 2007-05-21 2008-11-27 International Business Machines Corporation User-extensible rule-based source code modification

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140052459A (ko) * 2012-10-24 2014-05-07 삼성에스디에스 주식회사 Odbc프로그램 자동 코딩 방법
CN110377276A (zh) * 2019-07-19 2019-10-25 潍柴动力股份有限公司 源代码文件管理方法及设备
CN110377276B (zh) * 2019-07-19 2023-05-23 潍柴动力股份有限公司 源代码文件管理方法及设备

Also Published As

Publication number Publication date
WO2010101327A1 (ko) 2010-09-10

Similar Documents

Publication Publication Date Title
US9727574B2 (en) System and method for applying an efficient data compression scheme to URL parameters
Gallager Principles of digital communication
CN109818930B (zh) 一种基于tcp协议的通讯文本数据传输方法
CN101316241B (zh) 用于通信数据的tlv格式处理方法
EP1828924A2 (en) Xml parser
KR20010078015A (ko) 데이터 압축 장치, 데이터베이스 시스템, 데이터 통신시스템, 데이터 압축 방법, 기억 매체 및 프로그램 전송장치
US9049093B2 (en) Coded pulse data transmission using a look-up table
CN101610268A (zh) 一种关键字过滤的实现方法和设备
JP6148350B2 (ja) 光ネットワークシステムのための通信方法、システム、および装置
CN114938401B (zh) 可配置的网络协议数据解析方法及电子设备
US9698819B1 (en) Huffman code generation
KR100908889B1 (ko) 네트워크 상의 텍스트 메시지를 처리하는 소스 코드 생성 방법 및 그 장치
CN105071990B (zh) 一种通用的信息系统接口测试方法及装置
CN102708106B (zh) Exi 编码器
CN101588370A (zh) 一种多速率通讯数据流格式的解析方法
JP2013089183A (ja) Exiデコーダおよびプログラム
CN113162977B (zh) 一种信息处理方法及装置、设备、存储介质
CN114490889A (zh) 配置信息处理方法、装置、设备、介质及程序产品
CN110381056B (zh) 基于Netty的私有协议编解码方法及装置
CN104993906B (zh) 一种消息传输的方法及系统
US9864740B2 (en) Methods and systems for creating and applying a template driven element adapter
CN110162309A (zh) 参数校验方法及装置
JP3790245B2 (ja) 無線センサ・ネットワーク・システムの通信モジュール及び通信方法
CN112636912A (zh) 一种基于网络服务的数据加密校验算法
CN108123721B (zh) 编码方法及装置

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120716

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee