제5장 버퍼 유형

본 장에서는 Tmax에서 지원하는 버퍼 유형에 대해 설명한다.

5.1. 개요

다수의 서버를 운영하면서 서로 다른 하드웨어 및 운영체제 간에 데이터를 교환할 필요가 있을 경우 플랫폼마다 메모리 할당 방식의 차이로 발생하는 문제점을 극복하기 위해서 모든 플랫폼에 대한 상세한 지식과 더불어 데이터를 전환하는 복잡한 과정이 필요하다.

Tmax는 다양한 종류의 표준 버퍼를 제공하여 이러한 문제를 해결하며 불필요한 네트워크 부하를 줄이고 개발자의 선택의 폭을 넓히며 개발기간을 단축하는 등의 부가적인 장점을 가지고 있다. Tmax 애플리케이션 개발자는 Tmax에서 제공하는 다양한 버퍼를 사용하여 다음과 같은 효과를 얻을 수 있다.

5.2. 버퍼의 종류

Tmax에서는 네트워크 부하의 감소와 개발의 용이성을 위하여 다음의 버퍼를 지원한다.

[그림 5.1] Tmax 통신 버퍼 유형

Tmax 통신 버퍼 유형


5.3. 버퍼 관리

버퍼의 무결성을 보장하기 위해 표준 통신형 버퍼를 사용한다. 표준 통신형 버퍼는 통신 이전에 데이터 타입과 메모리 할당 방식에 기준을 정하여 사용하는 것이다. 송신하기 전에 버퍼의 데이터를 표준 통신형으로 변환하고 수신하기 전에 역변환한다. 데이터의 변환/역변환을 통해 Tmax는 이기종 간 통신할 경우 문자형뿐만 아니라 구조체 버퍼도 사용이 가능하다.

표준 통신형으로의 변환을 위해 Tmax에서는 sdlc 프로그램이 사용된다. sdlc 프로그램을 이용하면 클라이언트에는 표준 통신형 데이터로의 변환을 위한 정보 테이블이, 서버에서는 표준 통신형으로의 변환/역변환 프로그램이 생성된다. 이 과정을 통해 이기종 간의 통신할 경우에도 문자열이나 Byte 열뿐만 아니라 플랫폼마다 다른 원시 타입의 데이터형을 사용하는 구조체 버퍼나 필드 버퍼를 아무런 제약 없이 사용할 수 있게 된다.

구조체 버퍼인 STRUCT, X_C_TYPE, X_COMMON은 표준 통신형으로 변환되어야 하고 컴파일할 때 추가되어야 한다. STRING, CARRAY, X_OCTET 버퍼는 이기종 간에도 string형 통신이 가능하므로 표준 버퍼형으로의 변환이 필요없다.

참고

버퍼와 관련된 함수에 대한 자세한 설명은 “9.8. 버퍼 관리”"Tmax Reference Guide"를 참고한다.

5.3.1. 구조체 버퍼

개발자는 사용할 구조체를 구조체 파일에(xxx.s) 기록하며 이 파일은 변환 테이블과 변환 프로그램을 만드는 기반이 된다. 구조체 파일에는 typdef나 include와 같은 명령어는 사용할 수 없으며 구조체의 멤버는 모든 원시 타입 데이터와 구조체를 사용할 수 있다.

구조체 버퍼를 표준 통신형으로 사용하기 위해서는 Tmax에서 제공하는 sdlc 프로그램을 사용하여 표준 통신형 데이터로의 변환을 위한 정보 테이블과 표준 통신형 변환/역변환 프로그램을 생성해야 한다. 변환/역변환 프로그램은 개발된 서비스 루틴과 함께 컴파일해서 사용하며 정보 테이블은 구조체 버퍼를 사용할 때 자동으로 사용된다.

다음 그림은 구조체 버퍼(STRUCT, X_C_TYPE, X_COMMON)를 이용하여 애플리케이션을 개발할 때 서버/클라이언트 프로그램의 컴파일 순서이다. 구조체 버퍼의 이름은 demo.s이다.

[그림 5.2] 구조체 버퍼를 이용한 애플리케이션 프로그램 컴파일

구조체 버퍼를 이용한 애플리케이션 프로그램 컴파일


5.3.2. 필드 버퍼

개발자는 사용할 필드 버퍼를 필드 버퍼 파일(xxx.f)에 기록하며 이 파일은 변환 테이블을 만드는 기반이 된다. 필드 버퍼를 표준 통신형으로 사용하기 위해서는 Tmax에서 제공하는 fdlc 프로그램을 사용하여 정보 테이블을 생성하며 이 테이블은 필드 버퍼를 사용할 때 자동적으로 사용된다.

다음 그림은 필드 버퍼를 이용하여 애플리케이션을 개발할 때 서버/클라이언트 프로그램의 컴파일 순서이다. 필드 버퍼 파일명은 demo.f 이다.

[그림 5.3] 필드 버퍼를 이용한 애플리케이션 프로그램 컴파일

필드 버퍼를 이용한 애플리케이션 프로그램 컴파일