COM 라이브러리

본 장에서는 COM 라이브러리에서 제공하는 각각의 API에 대한 사용법을 설명한다. COM 라이브러리의 프로토타입은 comhead.h 헤더 파일에 정의되어 있다.

1. 개요

COM 라이브러리는 리모트 노드에서 Tmax의 SVCGW와 TCP/IP로 통신할 수 있도록 Tmax에서 제공하는 라이브러리이다. SVCGW와 통신을 원하는 리모트 노드는 반드시 COM 라이브러리를 사용하여 통신해야 한다. 리모트 노드의 사용자는 COM 라이브러리를 이용하여 Tmax과 TCP/IP로 서비스를 요청하거나 또는 서비스 요청을 받을 수 있다. 리모트 노드의 사용자 쪽에서는 Tmax과 통신할 때 통신 관련 부분을 COM 라이브러리에서 처리하여 보다 쉽게 Tmax의 서비스를 이용할 수 있다.

리모트 노드에서 Tmax과 TCP/IP로 통신하는 경우에는 항상 Tmax이 서버 모드가 되고, 리모트 노드 단이 클라이언트 모드가 된다.

다음은 COM 라이브러리에서 제공하는 API 목록이다.

API 설명

ComOpen

Tmax의 SVCGW와 TCP/IP로 연결을 맺고 리모트 노드를 SVCGW에 등록하는 함수이다.

ComDetach

Tmax의 SVCGW와의 등록을 해제하기 위해서 사용하는 함수이다.

ComClose

Tmax의 SVCGW와의 등록을 해제하고 연결을 끊는 함수이다.

ComSend

리모트 노드에서 Tmax의 SVCGW로 데이터를 전송하는 함수이다.

ComRecv

Tmax의 SVCGW로부터 데이터를 수신하는 함수이다.

2. ComOpen

Tmax의 SVCGW와 TCP/IP로 연결을 맺고 리모트 노드를 SVCGW에 등록하는 함수이다. Tmax의 SVCGW의 환경 파일의 서비스명 항목에 서비스명을 등록하지 않았으면 함수를 이용하여 반드시 서비스명을 등록해야 한다. 서비스명이 등록되지 않았으면 리모트 노드에서 Tmax으로 서비스는 요청할 수 있으나 반대로 Tmax에서 리모트 노드로 서비스는 요청할 수 없다. 사용자는 다른 함수를 사용하기 전에 반드시 함수를 사용하여 Tmax의 SVCGW와 연결해야 한다.

  • 프로토타입

    int ComOpen(int type, char *id, char *port)
  • 파라미터

    파라미터 설명

    type

    Tmax와 통신이 사용할 프로토콜(TCPIP/SERIAL)을 나타낸다. 각각의 프로토콜은 comhead.h 파일에 등록되어 있다.

    id

    리모트 노드를 식별하는 코드이다. 코드는 위에서 설명한 SVCGW 환경 파일과 관련이 있다. 환경 파일에 서비스명을 등록하거나 또는 함수에서 코드를 지정하여 리모트 노드를 식별하는 코드를 등록할 수 있다. 함수에서 등록하는 코드는 반드시 Tmax 환경 파일의 SERVICE 절에 등록된 서비스명이어야한다.

    port

    Tmax의 SVCGW와 연결할 때 사용할 서버의 주소와 포트를 지정하는 항목이다.

    SVCGW가 실행되고 있는 서버의 주소와 SVCGW CLOPT에 [-P] 옵션으로 등록한 포트중 하나를 지정한다. (예: "1.1.1.1:8090")

  • 반환값

    반환값 설명

    0

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다.

3. ComDetach

Tmax의 SVCGW와의 등록을 해제하기 위해서 사용하는 함수이다. 함수는 등록만 해제하고 실질적인 연결을 끊지 않는다. 함수를 사용하면 Tmax의 SVCGW와 데이터를 송수신할 수 없다.

  • 프로토타입

    int ComDetach(void)
  • 반환값

    반환값 설명

    0

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다.

4. ComClose

Tmax의 SVCGW와 등록을 해제하고 연결을 끊는 함수이다. 그러므로 Tmax의 SVCGW와 통신을 끊고자 하는 경우에는 반드시 함수를 호출해야만 한다.

  • 프로토타입

    int ComClose(void)
  • 반환값

    반환값 설명

    0

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다.

5. ComSend

리모트 노드에서 Tmax의 SVCGW로 데이터를 전송하는 함수이다. 함수를 이용하여 Tmax에 서비스를 요청하거나 또는 응답을 전송할 수 있다. Tmax의 서비스 요청에 대한 응답을 보낼 경우에도 반드시 Tmax의 새로운 서비스명을 지정해야 한다.

  • 프로토타입

    int ComSend(char *svc, int msgtype, char *data, long len, long flags)
  • 파라미터

    파라미터 설명

    svc

    Tmax에 요청할 서비스명을 지정하는 항목이다.

    msgtype

    Tmax의 SVCGW에 전송하는 데이터의 종류를 나타낸다. 각각의 메시지 타입은 commhead.h 파일을 참고한다.

    data

    Tmax의 SVCGW에 전송할 테이터가 저장된 버퍼의 포인터이다.

    len

    전송할 데이터의 길이를 나타낸다.

    flags

    서비스를 요청할 때 SVCGW가 해당 요청을 어떻게 처리해야 하는지를 나타낸다.

    • COMMDELAY : SVCGW는 해당 데이터를 지연처리로 인식하여 RQ에 저장한다.

    • COMMNOREPLY : 서비스만 요청하고 응답을 받지 않는다.

    현재 flags에 지정할 수 있는 값은 2가지로 commhead.h 파일을 참고한다.

  • 반환값

    반환값 설명

    0

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다.

6. ComRecv

Tmax의 SVCGW로부터 데이터를 수신하는 함수이다. 데이터는 서비스 요청일 수도 있고, 응답 데이터일 수도 있다.

  • 프로토타입

    int ComRecv(char *svc, int *msgtype, char *data, long *len, long flags)
  • 파라미터

    파라미터 설명

    svc

    Tmax에 요청한 서비스명이 저장될 항목이다.

    msgtype

    Tmax의 SVCGW에서 전송하는 데이터의 종류를 나타낸다. 각각의 메시지 타입은 commhead.h 파일을 참고한다.

    data

    Tmax의 SVCGW에서 수신한 테이터가 저장될 버퍼의 포인터이다. 버퍼는 수신 데이터 중 가장 큰 데이터의 버퍼 크기를 가져야 한다.

    len

    수신한 데이터의 길이를 나타낸다.

    flags

    사용하지 않는다.

  • 반환값

    반환값 설명

    0

    함수 호출에 성공한 경우이다.

    -1

    함수 호출에 실패한 경우이다.