KR102407941B1 - Rpc에 기반하여 외부 장치의 함수 또는 프로시저를 호출하는 전자 장치가 사용자 인터페이스를 생성하는 방법, 그 컴퓨터 프로그램 및 그 전자 장치 - Google Patents
Rpc에 기반하여 외부 장치의 함수 또는 프로시저를 호출하는 전자 장치가 사용자 인터페이스를 생성하는 방법, 그 컴퓨터 프로그램 및 그 전자 장치 Download PDFInfo
- Publication number
- KR102407941B1 KR102407941B1 KR1020210172658A KR20210172658A KR102407941B1 KR 102407941 B1 KR102407941 B1 KR 102407941B1 KR 1020210172658 A KR1020210172658 A KR 1020210172658A KR 20210172658 A KR20210172658 A KR 20210172658A KR 102407941 B1 KR102407941 B1 KR 102407941B1
- Authority
- KR
- South Korea
- Prior art keywords
- electronic device
- data
- input
- command
- service
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Transfer Between Computers (AREA)
Abstract
RPC(Remote Procedure Call)에 기반하여 외부 장치의 함수 또는 프로시저(procedure)를 호출하는 전자 장치의 동작 방법을 개시한다. 본 동작 방법은 IDL(Interface Definition Language)로부터 기 정의된 서비스에 대응하는 입력 메시지를 추출하고, IDL 에 기 정의된 파라미터 객체들에 기반하여, 입력 메시지로부터 입력 파라미터 그룹을 생성하며, 입력 파라미터 그룹에 기반하여 서비스에 대응하는 적어도 하나의 입력 파라미터 객체를 추출하고, 기 정의된 서비스로부터 생성된 프리픽스(prefix) 및 각 입력 파라미터 객체의 필드값에 기반하여 생성된 서픽스(suffix)를 이용하여 트리 구조의 커맨드(command) 그룹을 생성할 수 있다.
Description
본 발명은 RPC(Remote Procedure Call)에 기반하여 외부 장치의 함수 또는 프로시저(procedure)를 호출하는 전자 장치의 동작 방법 및 그 전자 장치에 관한 것으로서, 보다 구체적으로, RPC 서비스를 사용하기 위한 사용자 인터페이스를 자동으로 생성하는 방법 및 그 전자 장치에 관한 것이다.
원격 프로시저 호출(Remote Procedure Call, RPC)은 별도의 원격 제어를 위한 코드없이 다른 주소 공간에서 함수나 프로시저(procedure)를 실행할 수 있게 하는 프로세스 간 통신 기술로, 분산컴퓨팅 환경에서 많이 사용되어왔으며, 최근 마이크로 소프트웨어 아키텍처(Micro Software Architecture, MSA)에 적용되어 마이크로 서비스 간에도 많이 사용되고 있는 방식이며, Sun RPC, ONC RPC, DCE RPC 등과 같이 일부 변형된 형태로 존재한다.
RPC의 동작 방법은 IDL(Interface Definition Language)을 통해 호출 및 응답에 대한 인터페이스 정의에 의해 이루어지며, 해당 인터페이스는 클라이언트의 스터브(stub) 함수와 서버의 스터브(또는 스켈레톤)를 구성하게 된다. 보다 구체적으로, 해당 인터페이스는 RPC 를 위한 컴파일러(예컨대, RPCGEN 등)를 통해 클라이언트 및 서버 각각에 저장된다. 즉, 클라이언트의 프로그램은 자신의 주소 공간에 위치하는 프로시저/함수를 호출하는 것처럼 스터브에 정의된 기능 또는 서비스를 호출하면, 클라이언트의 스터브는 해당 호출을 RPC 호출로 변환하여 서버가 이해할 수 있는 형태의 데이터 캐스팅을 진행하고 서버의 RPC를 호출한다. 서버의 스터브는 호출에 대한 데이터를 전달받아 처리한 후, 이를 다시 캐스팅하여 클라이언트로 응답한다. 이때, 서버와 클라이언트는 트랜스포트 레이어(transport layer)를 통해 통신할 수 있다.
상기의 과정을 통해 개발자는 클라이언트와 서버 간의 통신을 이용함에 있어 RPC에 기반하여 하부 네트워크 프로토콜의 제약없이 고유 프로세스 개발에 집중할 수 있으며, 사용자는 클라이언트와 서버 간 통신에 필요한 상세 정보를 최소화할 수 있다는 장점이 있다. 한편, RPC를 가능케하는 중심 요소인 스터브는 IDL에 정의된 데이터형들에 기반한 인터페이스 정의에 의해 이루어지는 바, 개발자는 기 정의된 IDL 의 기능(또는 서비스) 및 필요 데이터형을 인지하고 이에 맞도록 인터페이스를 작성해야 할 필요가 있으며, 이에 따라 사용자가 사용할 수 있는 사용자 인터페이스를 작성해야 할 필요가 있다. 그러나, 시스템이 복잡해지고 요구되는 기능이 증가함에 따라 장치들 간에 송수신되는 데이터들이 다양해지고 있으며, 이에 따라 다양하고 복잡한 인터페이스들이 요구되어 이들을 작성하기 위한 시간 및 비용이 증가하고 있다. 특히 개발 초기 단계에서 이들 인터페이스 작성에 요구되는 시간 및 비용의 증가는 고유 기능을 개발하는데에 방해가 될 수 있다. 이에 따라, IDL에 정의된 데이터형들에 기반하여 새롭게 추가된 기능에 적합한 사용자 인터페이스를 자동으로 제공할 수 있는 방법에 대한 필요성이 있다.
본 발명은 상술한 문제점을 해결하기 위한 것으로, 본 발명의 목적은 IDL에 기 작성된 데이터형 및 서비스에 기반하여 자동으로 사용자 인터페이스를 생성하는 방법 및 그 컴퓨터 프로그램을 제공하는데에 있다. 특히, 본 발명의 목적은 CLI(Command Line Interface)를 자동으로 생성하는 방법, 그 컴퓨터 프로그램 및 그 전자 장치를 제공하는데에 있다.
다만, 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 또 다른 기술적 과제들이 더 존재할 수 있다.
상술한 목적을 달성하기 위한 본 발명의 일 실시 예에 따라 RPC(Remote Procedure Call)에 기반하여 외부 장치의 함수 또는 프로시저(procedure)를 호출하는 전자 장치의 동작 방법은, IDL(Interface Definition Language)로부터 기 정의된 서비스에 대응하는 입력 메시지를 추출하는 단계; 상기 IDL 에 기 정의된 파라미터 객체들에 기반하여, 상기 입력 메시지로부터 입력 파라미터 그룹을 생성하는 단계; 상기 입력 파라미터 그룹에 기반하여 상기 서비스에 대응하는 적어도 하나의 입력 파라미터 객체를 추출하는 단계; 및 상기 기 정의된 서비스로부터 생성된 프리픽스(prefix) 및 상기 각 입력 파라미터 객체의 필드값에 기반하여 생성된 서픽스(suffix)를 이용하여 트리 구조의 커맨드(command) 그룹을 생성하는 단계를 포함한다.
이상과 같은 다양한 실시 예들에 따르면, 본 발명의 전자 장치는 RPC 서비스를 사용할 수 있는 사용자 커맨드를 생성할 뿐 아니라, 사용자 커맨드를 효율적으로 처리 및 추천할 수 있는 기능을 제공함으로써 사용자가 보다 편리하게 RPC 서비스를 이용하도록 할 수 있다.
도 1은 본 발명의 일 실시 예에 따라 RPC(Remote Procedure Call)를 통해 외부 장치와 통신하는 전자 장치의 동작을 도시한다.
도 2는 본 발명의 일 실시예에 따른 프로토콜 버퍼(Protocol Buffers)의 예를 도시한다.
도 3은 본 발명의 일 실시예에 따라 전자 장치가 입력 파라미터 그룹을 생성하는 방법을 도시한 도면이다.
도 4는 입력 파라미터 그룹을 생성하는 일 예를 도시한 도면이다.
도 5는 본 발명의 일 실시예에 따라 선택형 구조의 파라미터 객체들에 기반하여 생성된 입력 파라미터 그룹을 도시한다.
도 6은 본 발명의 일 실시예에 따라 열거형 데이터형 파라미터 객체에 기반하여 생성된 입력 파라미터 그룹을 도시한다.
도 7은 본 발명의 일 실시예에 따라 전자 장치가 서브 파라미터 객체를 탐색하여 입력 파라미터 그룹에 추가하는 방법을 도시한 도면이다.
도 8은 본 발명의 일 실시예에 따라 서브 파라미터 객체에 기반하여 생성된 입력 파라미터 그룹을 도시한다.
도 9는 본 발명의 일 실시예에 따라 생성된 입력 파라미터 그룹으로부터 커맨드 세트(command set)를 생성하는 방법을 도시한 도면이다.
도 10은 본 발명의 일 실시예에 따라 입력 파라미터의 필드 특성에 따라 어노테이션(annotation)을 포함하는 리스트를 구성하는 방법을 도시한다.
도 11은 본 발명의 일 실시예에 따라 입력 파라미터 그룹으로부터 생성된 커맨드 세트를 도시한다.
도 12는 본 발명의 일 실시예에 따라 생성된 트리 구조의 커맨드 그룹을 도시한 예이다.
도 13은 본 발명의 일 실시예에 따라 커맨드 그룹을 사용하는 방법을 도시한 도면이다.
도 14는 본 발명의 일 실시예에 따라 전자 장치가 사용자 입력 커맨드를 커맨드 그룹에 매칭하는 일례를 도시한다.
도 15는 본 발명의 일 실시 예에 따른 전자 장치의 구성을 도시한 도면이다.
도 2는 본 발명의 일 실시예에 따른 프로토콜 버퍼(Protocol Buffers)의 예를 도시한다.
도 3은 본 발명의 일 실시예에 따라 전자 장치가 입력 파라미터 그룹을 생성하는 방법을 도시한 도면이다.
도 4는 입력 파라미터 그룹을 생성하는 일 예를 도시한 도면이다.
도 5는 본 발명의 일 실시예에 따라 선택형 구조의 파라미터 객체들에 기반하여 생성된 입력 파라미터 그룹을 도시한다.
도 6은 본 발명의 일 실시예에 따라 열거형 데이터형 파라미터 객체에 기반하여 생성된 입력 파라미터 그룹을 도시한다.
도 7은 본 발명의 일 실시예에 따라 전자 장치가 서브 파라미터 객체를 탐색하여 입력 파라미터 그룹에 추가하는 방법을 도시한 도면이다.
도 8은 본 발명의 일 실시예에 따라 서브 파라미터 객체에 기반하여 생성된 입력 파라미터 그룹을 도시한다.
도 9는 본 발명의 일 실시예에 따라 생성된 입력 파라미터 그룹으로부터 커맨드 세트(command set)를 생성하는 방법을 도시한 도면이다.
도 10은 본 발명의 일 실시예에 따라 입력 파라미터의 필드 특성에 따라 어노테이션(annotation)을 포함하는 리스트를 구성하는 방법을 도시한다.
도 11은 본 발명의 일 실시예에 따라 입력 파라미터 그룹으로부터 생성된 커맨드 세트를 도시한다.
도 12는 본 발명의 일 실시예에 따라 생성된 트리 구조의 커맨드 그룹을 도시한 예이다.
도 13은 본 발명의 일 실시예에 따라 커맨드 그룹을 사용하는 방법을 도시한 도면이다.
도 14는 본 발명의 일 실시예에 따라 전자 장치가 사용자 입력 커맨드를 커맨드 그룹에 매칭하는 일례를 도시한다.
도 15는 본 발명의 일 실시 예에 따른 전자 장치의 구성을 도시한 도면이다.
이하에서, 첨부된 도면을 이용하여 본 발명에 대하여 구체적으로 설명한다. 본 발명을 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다. 또한, 본 명세서의 설명 과정에서 이용되는 숫자(예를 들어, 제1, 제2 등)는 하나의 구성요소를 다른 구성요소와 구분하기 위한 식별기호에 불과하다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어"있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어"있다거나 "직접 접속되어"있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 명세서에 설명된 다양한 기법은 하드웨어 또는 소프트웨어와 함께 구현될 수 있거나, 적합한 경우에 이들 모두의 조합과 함께 구현될 수 있다. 본 명세서에 사용된 바와 같은 "부(Unit)", "모듈(Module)" 및 "시스템(System)" 등의 용어는 마찬가지로 컴퓨터 관련 엔티티(Entity), 즉 하드웨어, 하드웨어 및 소프트웨어의 조합, 소프트웨어 또는 실행 시의 소프트웨어와 등가로 취급할 수 있다. 예를 들어, 프로그램 모듈은 하나의 컴포넌트와 등가 혹은 둘 이상의 컴포넌트의 조합으로 구성될 수 있다. 또한, 본 발명에서는 서버 또는 단말에서 실행되는 애플리케이션 프로그램 및 하드웨어 모두가 모듈단위로 구성될 수 있고, 하나의 물리적 메모리에 기록되거나, 둘 이상의 메모리 및 기록매체 사이에 분산되어 기록될 수 있다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서 상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
본 명세서에서, 전자 장치는 적어도 하나의 프로세서를 포함하는 무선 통신 기능을 포함하는 하드웨어 장치를 의미하는 것이고, 실시 예에 따라 해당 하드웨어 장치에서 동작하는 소프트웨어적 구성도 포괄하는 의미로서 이해될 수 있다. 예를 들어, 전자 장치는 스마트폰, 휴대폰, 헨드헬드 장치(hand-held device), 태블릿 PC, 데스크톱, 노트북 및 각 장치에서 구동되는 클라이언트, 서버 및 애플리케이션을 모두 포함하는 의미로서 이해될 수 있으며, 또한 이에 제한되는 것은 아니다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 이하, 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시 예에 따라 RPC(Remote Procedure Call)를 통해 외부 장치와 통신하는 전자 장치의 동작을 도시한다. 본 발명의 일 실시예에 따른 전자 장치는 앞서 설명한 바와 같이, 클라이언트, 서버 및 애플리케이션을 모두 포함하는 의미로 이해될 수 있다. 특히, 본 발명의 전자 장치는 RPC 를 통해 외부 장치의 프로세스에 접근하여 외부 장치의 프로시저(procedure) 또는 함수를 호출한다. 이때, 전자 장치는 IDL(Interfacing Definition Language)로 구현된 스터브(stub) 등을 이용하여 외부 장치의 메모리에 저장된 프로시저 또는 함수를 호출할 수 있다. 스터브는 전자 장치의 메모리에 저장되는 인터페이스로서, 외부 장치의 프로시저 또는 함수를 호출하는데에 필요한 입력 메시지(Message)를 마샬링(marshalling)하여 전송 계층(transport layer)로 전달하고, 외부 장치로부터 수신된 데이터를 언마샬링(unmarshalling)하여 수신된 출력 메시지를 호출자에 전달하는 역할을 수행한다. 여기서, 입/출력 메시지는 IDL에 기 정의되어 있으며, IDL에 기 정의된 서비스(또는 함수)에 매칭되어 있다. 한편, 전자 장치와 외부 장치가 마샬링/언마샬링하는 방법 및 전송 계층에서 데이터를 송수신하는 방법에 대해서는, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 이해할 수 있을 것이므로 자세한 설명은 생략한다.
본 발명의 일 실시예에 따른 전자 장치는 IDL에 기술된 서비스를 사용자가 이용할 수 있도록 자동으로 사용자 인터페이스를 생성할 수 있다. 보다 구체적으로, 본 발명의 일 실시예에 따른 전자 장치는 IDL(Interface Definition Language)로부터 기 정의된 서비스에 대응하는 입력 메시지를 추출하고(s11), IDL 에 기 정의된 파라미터 객체들에 기반하여 입력 메시지로부터 입력 파라미터 그룹을 생성한다(s12). 이후, 전자 장치는 입력 파라미터 그룹에 기반하여 서비스에 대응하는 적어도 하나의 입력 파라미터 객체를 추출하며(s13), 기 정의된 서비스로부터 생성된 프리픽스(prefix) 및 각 입력 파라미터 객체의 필드값에 기반하여 생성된 서픽스(suffix)를 이용하여 트리 구조의 커맨드(command) 그룹을 생성한다(s14). 전자 장치는 이렇게 생성된 커맨드 그룹으로부터 사용자 커맨드 형식을 제공하는 한편, 입력된 사용자 커맨드를 상기 커맨드 그룹에 매칭하여 사용자가 해당 커맨드를 올바르게 사용했는지 용이하게 판단할 수 있다.
한편, 상기 입력 파라미터 객체는 비참조형 데이터형일 수 있다. 비참조형 파라미터 객체는, 다른 파라미터 객체를 참조하지 않는 것으로서, 보다 구체적인 예를 들어, 프리미티브(primitive) 데이터형, 열거형(enum) 데이터형 등으로서 구조체, 포인터 등과 같이 참조값을 포함하지 않는 것일 수 있다. 또한, 프리미티브 데이터형은 IDL 원시 제공 데이터형으로서, 비한정적 예로서, 이진수(bool), 정수형(int32, int64 등), 문자열(string), 소수형(float, double 등) 등을 포함할 수 있다.
한편, IDL 은 소프트웨어 컴포넌트의 인터페이스를 묘사하기 위한 명세 언어로서, 어느 한 언어에 국한되지 않고 언어중립적 방법으로 인터페이스를 표현함으로써 서로 다른 언어를 사용하는 소프트웨어 컴포넌트들 간의 통신을 가능케한다. IDL 은, 비한정적 예로서, XML, JSON, 프로토콜 버퍼(Protocol Buffers) 등을 포함할 수 있다. 본 명세서에서는 IDL의 일 예로서 프로토콜 버퍼를 들어 설명하나, 본 발명이 미치는 범위가 이에 한정되는 것은 아니며, 다른 IDL 에도 적용될 수 있다.
이하, 도 2 내지 도 14를 참조하여 전자 장치의 동작 방법을 보다 상세히 설명한다.
도 2는 본 발명의 일 실시예에 따른 프로토콜 버퍼(Protocol Buffers)의 예를 도시한다. 도 2를 참조하면, 프로토콜 버퍼는 RPC 가 제공하는 기능/서비스에 대한 정의(21) 및 파라미터 객체들에 대한 정의(22)를 포함한다.
각 RPC 기능(또는 서비스)는 기능의 명칭(예컨대, 도2의 'Sample'), 입력 메시지(예컨대, 'MessageA') 및 출력 메시지(예컨대, MessageB)를 포함할 수 있다.
각 입/출력 파라미터 객체는 프로토콜 버퍼에 기 정의된 메시지에 포함되며, 두 개 이상의 필드(예컨대, 'repeated', 'string', 'inputC')로 구성되어 있다. 파라미터 객체를 구성하는 필드들은 필드 특성(예컨대, repeated, required, optional), 데이터형 및 데이터 명칭 등을 포함할 수 있다. 이때, 데이터형은 앞서 설명한 프리미티브 데이터형, 열거형 데이터형 및 선택형 데이터형을 포함할 수 있다. 또한, 파라미터 객체는 다른 메시지를 참조하는 파라미터 객체(예컨대, 'Unit32 inputA')를 포함할 수 있다. 이때, 파라미터 객체의 데이터형은 해당 파라미터 객체가 참조하는 메시지의 명칭(즉, 'uint32 value')으로 기술될 수 있다.
또한, 각 파라미터 객체는 고유 정수값을 가질 수 있다. 이러한 정수값은 직렬화 및 역직렬화 시 순서를 매칭하는데에 이용될 수 있다.
본 발명의 일 실시예에 따른 전자 장치는 프로토콜 버퍼에 기 정의된 서비스 및 해당 서비스에 기 정의된 입력 메시지를 추출하기 위하여, 프로토콜 버퍼를 로드(load) 및 파싱(parsing)할 수 있다. 예를 들어, 전자 장치는 프로토콜 버퍼를 파싱하여 각 RPC 서비스 및 각 RPC 서비스에 기 정의된 입력 메시지를 추출할 수 있다. 즉, 도 2의 예에서, 전자 장치는 'Sample' 기능이 요청되면, 프로토콜 버퍼를 파싱하여 기 정의된 기능 'Sample'에 매칭하는 RPC 기능을 추출하고, 이의 입력 메시지인 'MessageA' 를 추출할 수 있다.
또한, 전자 장치는 이후의 동작을 위하여 파싱된 프로토콜 버퍼로부터 기 정의된 파라미터 객체들에 대한 정보를 획득할 수 있다.
도 3은 본 발명의 일 실시예에 따라 전자 장치가 입력 파라미터 그룹을 생성하는 방법을 도시한 도면이며, 도 4는 입력 파라미터 그룹을 생성하는 일 예를 도시한 도면이다. 도 4에서, 입력 메시지는 'MessageA'인 것으로 가정한다. 이하, 도 3 및 4를 참조하여 설명한다.
먼저, 전자 장치는 추출된 입력 메시지로부터 제1 트리(tree)의 루트 데이터 노드(root date node)를 생성할 수 있다(s31). 예를 들어, 도 4에 도시된 바와 같이, 전자 장치는 입력 메시지 'MessageA' 에 대응하여 루트 데이터 노드(41)를 생성할 수 있다. 이때, 루트 데이터 노드(41)의 노드값은 입력 메시지의 명칭이며, 필드값은 해당 노드가 메시지(Message)인 것을 나타내는 표지('type: Message')를 포함할 수 있으나, 이에 한정되는 것은 아니다.
이어서, 전자 장치는 IDL 파일(즉, 파싱된 IDL 파일)로부터 입력 메시지에 포함된 적어도 하나의 파라미터 객체를 추출할 수 있다(s32). 도 4의 예에서 전자 장치는 'MessageA'에 참조되는 두 개의 파라미터 객체 'double inputA' 및 'repeated string inputB'를 추출할 수 있다.
전자 장치는 추출된 각 파라미터 객체에 대응하는 제1 데이터 노드를 생성할 수 있으며(s33), 생성된 제1 데이터 노드를 상기 제1 트리의 차일드 노드로 추가할 수 있다(s34). 이를 통해 전자 장치는 트리 구조의 입력 파라미터 그룹을 생성할 수 있다. 도 4의 예에서, 전자 장치는 추출된 두 개의 파라미터 객체에 대응하는 두 개의 제1 데이터 노드(42, 43)를 생성할 수 있으며, 제1 데이터 노드 각각은 루트 데이터 노드(41)의 차일드로서 링크(link) 연결될 수 있다. 한편, 제1데이터 노드 각각의 노드값은 각 파라미터 객체의 데이터 명칭('inputA', 'inputB')이며, 필드값은 각 파라미터 객체의 데이터형('double', 'string')을 포함할 수 있다. 추가적으로, 전자 장치는 각 파라미터 객체의 필드 특성을 필드값으로 기술할 수 있으나, 이에 한정되는 것은 아니다.
만약, 파라미터 객체가 선택형(one of) 집합인 경우, 해당 집합에 포함된 복수의 서브 파라미터 객체들 각각은 데이터 노드로 생성되며, 이때 생성된 데이터 노드는 선택형 집합을 나타내는 표지 및 선택형 집합의 명칭을 더 포함하는 필드값을 포함할 수 있다. 도 5는 본 발명의 일 실시예에 따라 선택형 집합 구조의 파라미터 객체를 포함하는 입력 파라미터 그룹을 도시한다. 도 5를 참조하면, 전자 장치는 선택형 파라미터 객체('Items')에 포함된 두 개의 서브 파라미터 객체들('itemA', 'itemB')에 대응하는 두 개의 데이터 노드(52, 53)를 생성하며, 각 데이터 노드(52, 53)는 선택형 집합을 나타내는 표지(예컨대, 'oneof: True') 및 선택형 집합의 명칭(예컨대, 'items')을 더 기술할 수 있다.
또한, 파라미터 객체의 데이터형이 열거형 집합인 경우, 상기 파라미터 객체에 대응하는 데이터 노드는 열거형 집합의 명칭 및 열거된 데이터를 더 포함하는 필드값을 포함할 수 있다. 도 6은 본 발명의 일 실시예에 따라 열거형 집합 구조의 파라미터 객체를 포함하는 입력 파라미터 그룹을 도시한다. 도 6을 참조하면, 전자 장치는 열거형 파라미터 객체('inputA', 'inputB')에 대응하는 두 개의 데이터 노드(62, 63)의 필드값으로 열거형 집합의 명칭(예컨대, 'MsgName: EnumA', 'MsgName: EnumB') 및 열거된 데이터(예컨대, 'enumValues: [ITEM_A, ITEM_B]', enumValues: [ITEM_C, ITEM_D]')를 더 기술할 수 있다.
한편, 파라미터 객체가 다른 메시지를 참조하는 참조형 데이터형인 경우(예컨대, 도 2의 'UInt32 inputA'), 전자 장치는 참조된 메시지에 포함된 서브 파라미터 객체를 추가로 탐색하여 이를 입력 파라미터 그룹에 추가할 수 있다.
도 7은 본 발명의 일 실시예에 따라 전자 장치가 서브 파라미터 객체를 탐색하여 입력 파라미터 그룹에 추가하는 방법을 도시한 도면이다.
앞서 설명한 도 3의 s34단계(즉, 전자 장치는 입력 메시지의 파라미터 객체에 대응하는 제1 데이터 노드를 제1 트리의 차일드 노드로 추가하는 단계)에 이어서, 전자 장치는 제1 데이터 노드의 데이터형이 참조형인지 여부(즉, 다른 메시지를 참조하는지 여부)를 판단할 수 있다(s71). 예를 들어, 전자 장치는 프로토콜 버퍼를 파싱할 시에, 다른 메시지를 참조하는 파라미터 객체를 태깅하거나, 해당 파라미터 객체가 참조하는 다른 메시지의 위치값을 추가 기재하거나, 해당 파라미터 객체를 다른 IDL에서 참조하는 등의 전처리 작업을 할 수 있다. 그러나, 이에 한정되는 것은 아니며, 전자 장치는 추출된 파라미터 객체의 데이터형 필드가 다른 메시지를 나타낼 경우, 이를 참조형으로 판단할 수 있다.
전자 장치는 제1 데이터 노드의 데이터형이 참조형일 경우, 제1 데이터 노드가 참조된 메시지의 명칭을 필드값으로 포함하고 있는지 판단할 수 있다(s72). 만약, 제1 데이터 노드가 참조된 메시지의 명칭을 필드값으로 포함하고 있지 않으면, 파싱된 IDL 파일로부터 참조된 메시지를 탐색할 수 있다(s73). 이어서, 전자 장치는 참조된 메시지에 포함된 각 서브 파라미터 객체에 대응하는 제3 데이터 노드를 생성할 수 있다(s74). 제3 데이터 노드의 기술 방법은 도 3 내지 도 6에서 설명한 바와 동일 및/또는 유사하므로, 자세한 설명은 생략한다. 생성된 제3 데이터 노드는 제1 데이터 노드의 차일드 노드로 추가될 수 있다(s75).
한편, 전자 장치는 제1 데이터 노드의 필드값에 참조된 메시지의 명칭을 추가할 수 있다. 이를 통해, 전자 장치는 중복적으로 참조된 메시지가 탐색되는 것을 방지할 수 있다. 즉, s72 단계에서, 제1 데이터 노드의 필드값에서 참조된 메시지가 존재하면, 전자 장치는 상기 s73 단계를 생략할 수 있다.
한편, 전자 장치는 생성된 제3 데이터 노드에 대하여 앞서 설명한 s71 내지 s75 단계를 반복하여 수행할 수 있다. 이를 통해, 전자 장치는 참조형 데이터형으로 이루어진 파라미터 객체를 트리 구조 내에서 비참조형 데이터형으로 변환하여 표현할 수 있다.
한편, 도 7의 s71 내지 s73 단계는 파라미터 객체의 데이터형이 열거형인 경우에도 적용될 수 있다. 단, 데이터형이 열거형인 경우, 전자 장치는 s73 단계에서 참조된 메시지가 아닌 참조된 열거형 집합을 탐색하며, 새로운 데이터 노드를 생성하지 않고 제1 데이터 노드의 필드값에 열거된 데이터를 추가할 수 있다.
또한, 전술한 상기 도 3 내지 도 7의 방법은 입력 메시지 및/또는 참조된 메시지에 포함된 복수의 파라미터 객체들 각각에 대하여 반복하여 수행될 수 있다.
도 8은 본 발명의 일 실시예에 따라 서브 파라미터 객체에 기반하여 생성된 입력 파라미터 그룹을 도시한다. 이때, 입력 메시지는 'MessageA'인 것으로 가정한다.
도 8을 참조하면, 전자 장치는 입력 메시지(MessageA)의 파라미터 객체에 대응하는 제1 및 제2 데이터 노드(82, 83)를 생성하여 루트 데이터 노드(81)의 차일드 노드로 추가할 수 있다. 이후, 전자 장치는 제1 데이터 노드(82)의 데이터형이 참조형이므로 제1 데이터 노드(82)의 필드값이 참조된 메시지 'InnerMsgA'를 포함하는지 판단한다. 해당 필드값이 존재하지 않는 경우, 전자 장치는 제1 데이터 노드(82)에 참조된 메시지의 메시지명(예컨대, 'inputmsgA')을 추가하고, 참조된 메시지 'InnerMsgA'를 탐색하여, 'InnerMsgA'의 서브 파라미터 객체 {uint32 inputA, repeated string inputB}에 대응하는 두 개의 제3 데이터 노드(84, 85)를 생성할 수 있다. 생성된 두 개의 제3 데이터 노드(84, 85)는 제1 데이터 노드(82)의 차일드 노드로 추가될 수 있다.
도 9는 본 발명의 일 실시예에 따라 생성된 입력 파라미터 그룹으로부터 커맨드 세트(command set)를 생성하는 방법을 도시한 도면이며, 도 11은 본 발명의 일 실시예에 따라 입력 파라미터 그룹으로부터 생성된 커맨드 세트를 도시한다.
전자 장치는 트리 형태의 입력 파라미터 그룹으로부터 서비스에 대응하는 적어도 하나의 파라미터 객체를 추출한다. 이를 위해, 먼저 전자 장치는 적어도 하나의 리프 노드(leaf node)를 탐색한다(s91). 이때, 탐색되는 리프 노드는 기 정의된 각 서비스를 호출하는데에 요구되는 입력 파라미터 객체들로서, 비참조형 데이터형들로 이루어질 수 있다. 도 10의 예에서, 전자 장치는 {inputA, inputB, incputC, inputD}로 정의된 4개의 리프 노드(점선 도시됨)를 추출할 수 있다.
이후, 전자 장치는 각 리프 노드의 필드값들을 이용하여 어노테이션(annotation)을 갖는 데이터 세트 리스트(list)를 생성할 수 있다(s92). 도 10의 예에서, 전자 장치는 리프 노드의 노드값(즉, 입력 파라미터 객체의 명칭으로서, 'inputA' 등)으로 표현되며, 리프 노드의 필드값-즉, 데이터형('Type: uint32' 등) 및 필드 특성('Repeated: False' 등) 등-을 어노테이션을 갖는 복수의 데이터 세트를 생성할 수 있다. 한편, 생성된 데이터 세트들은 서로 리스트(list) 연결될 수 있다. 이때, 리스트의 명칭은 입력 파라미터 그룹에 대응하는 서비스의 명칭일 수 있으나, 이에 한정되는 것은 아니다.
다음으로, 전자 장치는 파싱된 IDL 파일의 기 정의된 서비스에 대응하여 커맨드의 프리픽스(prefix)를 생성할 수 있다(s93). 보다 구체적으로, 전자 장치는 기 정의된 서비스의 명칭 및 해당 서비스의 처리 방식에 기반하여, 커맨드의 프리픽스를 생성할 수 있다. 여기서, 처리 방식이란, 전자 장치가 수행 가능한 데이터 처리 방식으로서, 생성(create), 읽기(read), 갱신(update), 삭제(delete) 등을 포함할 수 있다. 한편, 기 정의된 서비스의 명칭은 서비스 고유 명칭 및 서비스 처리 방식을 포함하며, 프리픽스는 고유 명칭 및 서비스 처리 방식을 구분자(예컨대, 공백 등)으로 구분하여 형성될 수 있다. 예를 들어, 서비스 명칭은 'DescUpdate', 'NameDelete'와 같이 기술될 수 있으며, 고유 명칭인 'Desc', 'Name'과 서비스 처리 방식인 'Update', 'Delete'를 포함할 수 있다. 이 경우, 전자 장치는 서비스 고유 명칭('Desc', 'Name')과 처리 방식('update', 'delete')를 구분자로 구분하여 프리픽스를 생성할 수 있다.
보다 구체적인 예를 들어, 전자 장치는 서비스의 고유 명칭을 먼저 배치하고, 공백(' ') 이후에 서비스의 처리 방식을 배치하여 프리픽스를 생성할 수 있으며, 이와 반대로 배치하여 생성할 수도 있다. 또한, 서비스 처리 방식에 따라 서비스 처리 방식을 서비스의 고유 명칭의 앞에 또는 뒤에 배치할 수 있다. 즉, 생성(create) 및 갱신(update)에 해당하는 커맨드에 대해서는 서비스의 고유 명칭을 앞에 배치하여 'desc create/update'로 프리픽스를 생성할 수 있으며, 읽기(read) 및 삭제(delete)에 해당하는 커맨드에 대해서는 서비스의 고유 명칭을 뒤에 배치하여 'read/delete desc'로 프리픽스를 생성할 수 있다. 또한, 프리픽스는 서비스의 처리 방식을 생략하거나 다른 명칭으로 변경하여 형성될 수도 있다. 예를 들어, 'create/update'를 생략하여 'desc'로 프리픽스를 생성할 수 있으며, 'read' 를 대신하여 'show desc'를 프리픽스로 사용하거나 'delete'를 대신하여 'no name'을 프리픽스로 사용할 수도 있으나, 이에 한정되는 것은 아니다.
한편, 생성된 프리픽스는 프리픽스 어노테이션(annotation)을 포함할 수 있다. 이때, 생성된 프리픽스가 구분자로 구분되는 복수의 구성요소로 이루어질 경우, 전자 장치는 각 구성요소 별로 프리픽스 어노테이션을 생성할 수 있다. 프리픽스 어노테이션은, 비한정적인 예로서, 기 정의된 서비스의 명칭을 포함할 수 있다.
이어서, 전자 장치는 데이터 세트 리스트에 기반하여 커맨드의 서픽스(suffix)를 생성할 수 있다(s94). 이때, 서픽스는 기 정의된 서비스의 입력 파라미터 객체, 이에 따른 사용자 입력 필드 및 사용자 입력 데이터형을 포함할 수 있다. 즉, 전자 장치는 데이터 세트 리스트에 포함된 각 데이터 세트의 명칭 및 어노테이션을 추출하여 서픽스를 생성할 수 있다. 도 11의 예에서, 전자 장치는 데이터 세트 리스트에 포함된 제1 내지 제3 데이터 세트(121, 122, 123) 각각에 대하여, 세 개의 서픽스 {'textA <string>' 'textB <string>', 'textC <string>'}를 생성할 수 있다. 여기서 꺾쇠 괄호(<>)는 사용자 입력값에 대응하며, 꺽쇠 괄호 내에 포함되는 데이터형은 사용자 입력값으로 요구되는 데이터형(예컨대, 문자열 등)을 나타낼 수 있다.
한편, 생성된 서픽스는 서픽스 어노테이션을 포함할 수 있다. 만약, 생성된 서픽스가 구분자로 구분되는 복수의 구성요소로 이루어질 경우, 전자 장치는 각 구성요소 별로 서픽스 어노테이션을 생성할 수 있다. 서픽스 어노테이션은, 비한정적인 예로서, 기 정의된 서비스의 명칭, 입력 파라미터 객체의 데이터형, 필드 특성 등을 포함할 수 있다. 데이터 세트의 명칭(즉, 입력 파라미터 객체의 명칭)을 기 결정된 특성으로 변경할 경우(예컨대, textA 를 text-a 와 같이 대문자를 '-(소문자)'로 변경하는 등), 서픽스 어노테이션은 변경되기 전의 데이터 세트의 명칭을 더 포함할 수 있다. 또한, 데이터 세트의 어노테이션이 전술한 정보 이외에 다른 정보를 포함할 경우(예컨대, 열거형 집합명, 열거된 데이터 등), 서픽스 어노테이션은 이에 대한 정보를 더 포함할 수 있으나, 이에 한정되는 것은 아니다.
전자 장치는 생성된 프리 픽스와 서픽스를 구분자로 연결하여 커맨드를 생성할 수 있다. 앞의 예에서, 전자 장치는 'desc textA <string>', 'desc textB <string>', 'desc textC <string>' 세 개의 커맨드를 생성할 수 있다. 생성된 커맨드들은 사용자에게 제공될 수 있다.
한편, 전자 장치는 생성된 커맨드로부터, 또는 상기 프리 픽스 및 서픽스를 생성함과 동시에 커맨드 그룹을 생성할 수 있다. 전자 장치는 기 결정된 하이어라키(hierarchy)에 따라 제2 트리를 생성할 수 있다(s95). 예를 들어, 하이어라키는 커맨드의 배치 순서에 의해 기 결정될 수 있다. 전자 장치는 구분자로 토크나이징(tokenizing)되는 커맨드의 구성요소들 각각을 순차적으로 이전 구성요소의 차일드 노드로 추가하여 제2 트리를 형성할 수 있다. 즉, 전자 장치는 커맨드의 프리픽스부터 생성된 순서에 따라 순차적으로 제2 트리에 차일드 노드로 추가할 수 있다. 이때, 제2 트리의 각 데이터 노드의 필드값에는 각 커맨드의 구성요소에 대응하는 프리픽스 어노테이션 또는 서픽스 어노테이션이 포함될 수 있다.
한편, 새로운 커맨드를 제2 트리에 추가할 경우, 전자 장치는 기 결정된 하이어라키에 따라 각 구성요소들이 제2 트리에 기 존재하는지 탐색할 수 있다. 만약, 제1 구성요소가 제2 트리에 존재할 경우, 탐색된 노드의 차일드 노드들을 탐색하여 커맨드의 제2 구성요소가 존재하는지 추가 탐색할 수 있다. 만약, 제2 구성요소가 탐색되지 않을 경우, 전자 장치는 기 탐색된 데이터 노드의 차일드 노드로 제2 구성요소를 추가하며, 제2 구성요소가 탐색되면 전자 장치는 커맨드의 제3 구성요소를 탐색된 노드의 차일드 노드들에서 재탐색할 수 있다. 도 12는 본 발명의 일 실시예에 따라 생성된 트리 구조의 커맨드 그룹을 도시한 예이다.
도 13은 본 발명의 일 실시예에 따라 커맨드 그룹을 사용하는 방법을 도시한 도면이다.
도 13을 참조하면, 전자 장치는 사용자 입력 커맨드가 수신됨에 응답하여(s131), 사용자 입력 커맨드를 토크나이징할 수 있다(s132). 예를 들어, 전자 장치는 공백을 기준으로 사용자 입력 커맨드를 토크나이징 할 수 있으나, 이에 한정되는 것은 아니다.
전자 장치는 기 결정된 하이어라키에 따라, 토크나이징된 사용자 입력 커맨드를 커맨드 그룹에 매칭할 수 있다(s133). 예를 들어, 전자 장치는 사용자 입력 커맨드의 구성요소들을 순차적으로 제2 트리의 하이어라키에 따라 탐색할 수 있다. 도 14는 본 발명의 일 실시예에 따라 전자 장치가 사용자 입력 커맨드를 커맨드 그룹에 매칭하는 일례를 도시한다. 도 14를 참조하면, 전자 장치는 사용자 입력 커맨드('list 3 content SAMPLE')을 공백으로 토크나이징하여 제2 트리(141)의 하이어라키에 따라 탐색할 수 있다. 즉, 제1 구성요소 'list'가 제2 트리(141)에서 탐색되면, 전자 장치는 탐색된 노드의 차일드 노드들('<uint32>', 'content')에서 상기 제2 구성요소 '3'를 탐색할 수 있다. 이와 같이, 전자 장치는 트리 구조의 커맨드 그룹을 이용하여 사용자 입력 커맨드를 용이하게 해석할 수 있으며, 잘못된 커맨드 입력이 수신된 경우, 해당 구성요소의 위치 및 해당 구성요소의 포맷 등을 사용자에게 제공할 수 있다.
이와 같이, 본 발명의 일 실시예에 따른 전자 장치는 RPC 를 통해 외부 장치의 함수 또는 프로시져를 호출하는 전자 장치에서 필요한 기능들에 대한 사용자 커맨드를 자동으로 생성할 뿐 아니라, 이를 트리 구조의 커맨드 그룹으로 관리함으로써, 보다 편리하게 사용자 입력 커맨드를 처리할 수 있다.
도 15는 본 발명의 일 실시 예에 따른 전자 장치(15)의 구성을 도시한 도면이다.
본 발명의 일 실시예에 따른 전자 장치(15)는 RPC(Remote Procedure Call)에 기반하여 외부 장치의 함수 또는 프로시저(procedure)를 호출하기 위하여 통신 장치(151), 프로세서(152) 및 메모리(153)를 포함한다.
통신 장치(151)는 프로세서(152)의 제어에 의해, 전자 장치(15)가 서버 등의 외부 장치와 통신하기 위한 적어도 하나의 구성요소를 포함할 수 있다. 예를 들어, 통신 장치(151)는 네트워크 카드, 네트워크 스위치, 랜 카드, 네트워크 인터페이스 처리부 등을 포함할 수 있다.
프로세서(152)는 하나 이상의 코어, 그래픽 처리부 및/또는 다른 구성 요소와 신호를 송수신하는 연결 통로(예컨대, 버스 등)를 포함할 수 있다.
프로세서(152)는 메모리(153)에 저장된 하나 이상의 인스트럭션을 실행함으로써, 앞서 도 1 내지 도 14와 관련하여 설명된 방법을 수행한다.
예를 들어, 프로세서(152)는 IDL(Interface Definition Language)로부터 기 정의된 서비스에 대응하는 입력 메시지를 추출하고, IDL 에 기 정의된 파라미터 객체들에 기반하여, 입력 메시지로부터 입력 파라미터 그룹을 생성하며, 입력 파라미터 그룹에 기반하여 서비스에 대응하는 적어도 하나의 입력 파라미터 객체를 추출하고, 기 정의된 서비스로부터 생성된 프리픽스(prefix) 및 각 입력 파라미터 객체의 필드값에 기반하여 생성된 서픽스(suffix)를 이용하여 트리 구조의 커맨드(command) 그룹을 생성할 수 있다.
한편, 프로세서(152)는 프로세서(152) 내부에서 처리되는 신호(또는, 데이터)를 일시적 및/또는 영구적으로 저장하는 램(RAM: Random Access Memory, 미도시) 및 롬(ROM: Read-Only Memory, 미도시)을 더 포함할 수 있다. 또한, 프로세서(152)는 그래픽 처리부, 램 및 롬 중 적어도 하나를 포함하는 시스템 온 칩(SoC: system on chip) 형태로 구현될 수 있다.
메모리(153)에는 프로세서(152)의 처리 및 제어를 위한 프로그램들(하나 이상의 인스트럭션들)을 저장할 수 있다. 메모리(153)에 저장된 프로그램들은 기능에 따라 복수 개의 모듈들로 구분될 수 있다.
또한, 전자 장치(15)는 상기의 구성들 이외에, 각 기능에서 처리되는 데이터 등을 표시하는 디스플레이, 사용자 입력을 수신하는 사용자 입력 장치 등을 더 포함할 수 있다. 그러나, 본 발명의 전자 장치(15)가 더 많은 구성요소들을 포함하여 구현될 수 있음은 본 발명의 기술분야의 통상의 지식을 가진 자가 용이하게 이해할 수 있을 것이다.
한편, 상술한 다양한 실시 예들에 따른 전자 장치의 동작 방법은 하드웨어에 직접 구현되거나, 하드웨어에 의해 실행되는 소프트웨어로 생성되어 다양한 전자 장치에 탑재될 수 있다.
예를 들어, IDL(Interface Definition Language)로부터 기 정의된 서비스에 대응하는 입력 메시지를 추출하는 기능, IDL 에 기 정의된 파라미터 객체들에 기반하여, 입력 메시지로부터 입력 파라미터 그룹을 생성하는 기능, 입력 파라미터 그룹에 기반하여 서비스에 대응하는 적어도 하나의 입력 파라미터 객체를 추출하는 기능, 및 기 정의된 서비스로부터 생성된 프리픽스(prefix) 및 각 입력 파라미터 객체의 필드값에 기반하여 생성된 서픽스(suffix)를 이용하여 트리 구조의 커맨드(command) 그룹을 생성하는 기능을 실행하는 프로그램이 저장된 컴퓨터로 판독 가능한 기록 매체(computer readable medium)가 설치될 수 있다. 특히, 본 발명은 컴퓨터나 이와 동등한 수준의 디지털 장치에서 판독 가능한 프로그램, 혹은 그 프로그램이 기록된 기록매체에 의해 수행될 수 있다.
컴퓨터가 판독 가능한 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현되는 것도 포함한다.
컴퓨터가 판독 가능한 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고, 상기 방법을 구현하기 위한 기능적인(function) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술분야의 프로그래머들에 의해 용이하게 추론될 수 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 또한, 본 발명에 개시된 실시 예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 한 것이고, 이러한 실시 예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 따라서, 본 발명의 호 범위는 아래의 청구 범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
15: 전자 장치
151: 통신 장치
152: 프로세서
153: 메모리
151: 통신 장치
152: 프로세서
153: 메모리
Claims (14)
- RPC(Remote Procedure Call)에 기반하여 외부 장치의 함수 또는 프로시저(procedure)를 호출하는 전자 장치의 동작 방법에 있어서,
IDL(Interface Definition Language)로 표현되는 인터네이스인 프로토콜 버퍼를 파싱하여 요청된 기능에 대응하는 RPC 서비스를 추출하고, 상기 추출된 RPC 서비스에 기 정의된 입력 메시지를 추출하는 단계;
상기 IDL 에 기 정의된 파라미터 객체들에 기반하여, 상기 입력 메시지로부터 입력 파라미터 그룹을 생성하는 단계;
상기 입력 파라미터 그룹에 기반하여 상기 서비스에 대응하는 적어도 하나의 입력 파라미터 객체를 추출하는 단계; 및
상기 서비스로부터 생성된 프리픽스(prefix) 및 상기 추출된 입력 파라미터 객체의 필드값에 기반하여 생성된 서픽스(suffix)를 이용하여 트리 구조의 커맨드(command) 그룹을 생성하는 단계를 포함하는 방법. - 제 1 항에 있어서,
상기 입력 파라미터 그룹을 생성하는 단계는,
상기 입력 메시지로부터 제1 트리의 제1 루트 데이터 노드(root data note)을 생성하는 단계;
상기 IDL로 표현되는 IDL 파일로부터 상기 입력 메시지를 참조하는 적어도 하나의 제1 파라미터 객체를 추출하는 단계;
상기 적어도 하나의 제1 파라미터 각각에 대응하는 적어도 하나의 제1 데이터 노드를 생성하는 단계; 및
상기 적어도 하나의 제1 데이터 노드를 상기 제1 트리의 차일드(child) 노드로 추가하는 단계를 포함하는 방법. - 제 2 항에 있어서,
상기 적어도 하나의 입력 파라미터 객체를 추출하는 단계는,
상기 제1 트리의 리프 노드(leaf node)를 탐색하는 단계; 및
상기 리프 노드의 필드값에 기반하여 생성된 어노테이션(annotation)을 포함하는 데이터 세트를 생성하는 단계를 포함하되,
상기 데이터 세트는 리스트(list) 연결되는 것인 방법. - 제 3 항에 있어서,
상기 트리 구조의 커맨드 그룹을 생성하는 단계는,
프리픽스 및 서픽스를 생성하는 단계;
상기 프리픽스와 상기 서픽스를 연결하여 커맨드를 생성하는 단계;
상기 커맨드에 포함된 구성요소들 각각에 대응하는 적어도 하나의 제2 데이터 노드를 생성하는 단계; 및
상기 커맨드의 기 결정된 하이어라키(hierarchy)에 따라 상기 적어도 하나의 제2 데이터 노드를 연결하여 제2 트리를 생성하는 단계를 포함하는 방법. - 제 4 항에 있어서,
상기 기 정의된 서비스의 명칭은 상기 서비스의 고유 명칭 및 서비스 처리 방식 중 적어도 하나를 포함하며,
상기 고유 명칭 및 상기 서비스 처리 방식을 포함하는 경우, 상기 프리픽스는 구분자로 구분된 두 개 이상의 구성요소로 형성되는 것인 방법. - 제 5 항에 있어서,
상기 프리픽스는 상기 서비스 처리 방식을 생략하거나 다른 명칭으로 변경하여 형성되는 것인 방법. - 제 4 항에 있어서,
상기 데이터 세트에 포함된 어노테이션에 기반하여, 상기 서픽스는 상기 적어도 하나의 입력 파라미터 객체, 사용자 입력 필드 및 사용자 입력 데이터형 중 적어도 하나를 포함하여 형성되는 것인 방법. - 제 4 항에 있어서,
상기 프리픽스의 각 구성요소는 프리픽스 어노테이션을 포함하고, 상기 서픽스의 각 구성요소는 서픽스 어노테이션을 포함하며,
상기 프리픽스 어노테이션은 상기 기 정의된 서비스의 명칭을 포함하고, 상기 서픽스 어노테이션은 상기 기 정의된 서비스의 명칭, 입력 파라미터 객체의 데이터형 및 필드 특성을 포함하는 것인 방법. - 제 4 항에 있어서,
상기 제2 트리는 상기 커맨드의 구성요소들 각각이 순차적으로 이전 구성요소의 차일드 노드로 추가되어 형성되는 것인 방법. - 제 4 항에 있어서, 상기 방법은,
사용자 입력 커맨드에 응답하여 상기 사용자 입력 커맨드를 토크나이징(tokenizing)하는 단계; 및
상기 기 결정된 하이어라키에 따라, 상기 토크나이징된 사용자 입력 커맨드를 상기 커맨드 그룹에 매칭하는 단계를 더 포함하는 방법. - 제 2 항에 있어서, 상기 방법은
상기 적어도 하나의 제1 데이터 노드 중 적어도 하나의 데이터 노드의 데이터형이 참조형인 경우, 상기 데이터 노드의 필드값이 상기 참조된 메시지의 명칭을 포함하는지 판단하는 단계;
상기 참조된 메시지의 명칭을 포함하지 않을 경우, 상기 참조된 메시지를 탐색하는 단계;
상기 참조된 메시지에 포함된 적어도 하나의 서브 파라미터 객체에 대응하는 적어도 하나의 제3 데이터 노드를 생성하는 단계; 및
상기 적어도 하나의 제3 데이터 노드를 상기 데이터 노드의 차일드 노드로 추가하는 단계를 더 포함하는 방법. - 제 1 항에 있어서,
상기 입력 파라미터 객체는, 모두 비참조형 데이터형인 것인 방법. - 외부 장치와 통신하는 통신 장치;
하나 이상의 인스트럭션을 저장하는 메모리; 및
상기 메모리에 저장된 상기 하나 이상의 인스트럭션을 실행하는 프로세서를 포함하고,
상기 프로세서는 상기 하나 이상의 인스트럭션을 실행함으로써, 제1 항의 방법을 수행하는 전자 장치. - 하드웨어인 컴퓨터와 결합되어, 제1 항의 방법을 수행할 수 있도록 컴퓨터에서 독출가능한 기록매체에 저장된 컴퓨터프로그램.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210172658A KR102407941B1 (ko) | 2021-12-06 | 2021-12-06 | Rpc에 기반하여 외부 장치의 함수 또는 프로시저를 호출하는 전자 장치가 사용자 인터페이스를 생성하는 방법, 그 컴퓨터 프로그램 및 그 전자 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210172658A KR102407941B1 (ko) | 2021-12-06 | 2021-12-06 | Rpc에 기반하여 외부 장치의 함수 또는 프로시저를 호출하는 전자 장치가 사용자 인터페이스를 생성하는 방법, 그 컴퓨터 프로그램 및 그 전자 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR102407941B1 true KR102407941B1 (ko) | 2022-06-13 |
Family
ID=81983950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020210172658A KR102407941B1 (ko) | 2021-12-06 | 2021-12-06 | Rpc에 기반하여 외부 장치의 함수 또는 프로시저를 호출하는 전자 장치가 사용자 인터페이스를 생성하는 방법, 그 컴퓨터 프로그램 및 그 전자 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102407941B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024058923A1 (en) * | 2022-09-12 | 2024-03-21 | Intel Corporation | Acceleration of communications |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160003485A (ko) * | 2014-07-01 | 2016-01-11 | 삼성전자주식회사 | 원격 함수 호출을 위한 자동 코드 생성 |
US20160070609A1 (en) * | 2014-09-04 | 2016-03-10 | International Business Machines Corporation | Automatically generating efficient remote procedure call (rpc) code for heterogeneous systems |
KR20160060023A (ko) * | 2013-06-18 | 2016-05-27 | 시암벨라 리미티드 | 코드 가상화 및 원격 프로세스 호출 생성을 위한 방법 및 장치 |
KR20160080487A (ko) * | 2014-12-29 | 2016-07-08 | 서강대학교산학협력단 | 디바이스간 원격 프로시저 호출 방법 |
-
2021
- 2021-12-06 KR KR1020210172658A patent/KR102407941B1/ko active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160060023A (ko) * | 2013-06-18 | 2016-05-27 | 시암벨라 리미티드 | 코드 가상화 및 원격 프로세스 호출 생성을 위한 방법 및 장치 |
KR20160003485A (ko) * | 2014-07-01 | 2016-01-11 | 삼성전자주식회사 | 원격 함수 호출을 위한 자동 코드 생성 |
US20160070609A1 (en) * | 2014-09-04 | 2016-03-10 | International Business Machines Corporation | Automatically generating efficient remote procedure call (rpc) code for heterogeneous systems |
KR20160080487A (ko) * | 2014-12-29 | 2016-07-08 | 서강대학교산학협력단 | 디바이스간 원격 프로시저 호출 방법 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024058923A1 (en) * | 2022-09-12 | 2024-03-21 | Intel Corporation | Acceleration of communications |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9075833B2 (en) | Generating XML schema from JSON data | |
US7761586B2 (en) | Accessing and manipulating data in a data flow graph | |
CN105760534B (zh) | 自定义的可序列化的数据结构、hadoop集群、服务器及其应用方法 | |
KR100574156B1 (ko) | 인터넷을 통해 레거시 컴퓨터 애플리케이션을 액세스하는 방법 | |
US8438190B2 (en) | Generating web services from business intelligence queries | |
CN111026931B (zh) | 一种数据查询方法、装置、设备及介质 | |
CN108846753B (zh) | 用于处理数据的方法和装置 | |
US20080208830A1 (en) | Automated transformation of structured and unstructured content | |
WO2007144853A2 (en) | Method and apparatus for performing customized paring on a xml document based on application | |
JP2005018777A (ja) | 共通問い合わせ実行時システムおよびアプリケーションプログラミングインターフェイス | |
CN110795697B (zh) | 逻辑表达式的获取方法、装置、存储介质以及电子装置 | |
CN108829467B (zh) | 第三方平台对接实现方法、装置、设备及存储介质 | |
CN110457144A (zh) | 一种实现前端应用的方法、装置、介质和设备 | |
CN109522341A (zh) | 实现基于sql的流式数据处理引擎的方法、装置、设备 | |
CN110109983B (zh) | 一种操作Redis数据库的方法和装置 | |
CN115016784B (zh) | 低代码应用复用方法、应用解析系统、设备及存储介质 | |
KR102407941B1 (ko) | Rpc에 기반하여 외부 장치의 함수 또는 프로시저를 호출하는 전자 장치가 사용자 인터페이스를 생성하는 방법, 그 컴퓨터 프로그램 및 그 전자 장치 | |
US8463744B2 (en) | Method and system for synchronizing data | |
Peters | Building rich internet applications with node. js and express. js | |
CN108959294A (zh) | 一种访问搜索引擎的方法和装置 | |
CN110555178B (zh) | 数据代理方法及装置 | |
US6708310B1 (en) | Method and system for implementing user-defined codeset conversions in a computer system | |
US20120136881A1 (en) | Exchanging data using data transformation | |
US10891426B2 (en) | Editing program, editing device, and editing method for editing text and displaying the edited text | |
CN111767498A (zh) | 一种实现文件信息共享的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |