사용자 함수

본 장에서는 SNA LU 0와 SNA LU 6.2에서 사용하는 사용자 함수를 설명한다.

1. SNA LU 0

헤더 파일

다음은 사용자 함수를 사용하기 위한 헤더 파일이다.

<lu0gw_prototype.h>

#ifndef _LU0GW_PROTOTYPE_H_
#define _LU0GW_PROTOTYPE_H_

#ifndef _WIN32
int get_msg_info(char *header, char *snddata, char *rcvdata);
#endif

#endif /* _LU0GW_PROTOTYPE_H_ */
소스코드 파일

다음은 사용자 함수를 사용하기 위한 소스코드 파일이다.

<custom.c>

#include <stdio.h>
#include <fcntl.h>
#include <string.h>
#include <sys/types.h>

#include "lu0gw_prototype.h"


/* ---------------------------------------------------------------
   get_msg_info : 호스트로부터 응답 데이터를 수신하면 호출된다.
   header : 사용자 헤더, NULL 체크 필요
   snddata : 호스트 송신 데이터
   rcvdata : 호스트 수신 데이터
   return : 0보다 클 경우, 정상 반환
            0일 경우, 호스트 수신 데이터 버림(NOREPLY 처리)
            -1일 경우, 호스트 수신 데이터 버림(계속 메시지 기다림)
   --------------------------------------------------------------- */
int get_msg_info(char *header, char *snddata, char *rcvdata)
{
    /* 전송 데이터가 없을 경우: 이미 timeout 되었음 */
    if (snddata == NULL)
        return 1;               /* must 1 return */

    return 1;
}

2. SNA LU 6.2

헤더 파일

다음은 사용자 함수를 사용하기 위한 헤더 파일이다.

<lu62sgw_prototype.h>

#ifndef _LU62SGW_PROTOTYPE_H_
#define _LU62SGW_PROTOTYPE_H_

#ifndef _WIN32
int get_wsname(char *uhead, char *wsname);
int get_msg_info(char *data, int len);
int put_msg_info(char *data, int len, char *luname);
int get_msg_info2(TPGWINFO_T *gwinfo, char *data, int len);
int put_msg_info2(TPGWINFO_T *gwinfo, char *data, int len, char *luname);
#endif

#endif /* _LU62SGW_PROTOTYPE_H_ */
소스코드 파일

다음은 사용자 함수를 사용하기 위한 소스코드 파일이다.

<custom.c>

#include <stdio.h>
#include <fcntl.h>
#include <string.h>
#include <sys/types.h>
#include <usrinc/atmi.h>
#include <usrinc/hlinkapi.h>

#include "lu62sgw_prototype.h"

/* get_msg_info() return value */
#define DATA_INCOMPLETE        0
#define DATA_COMPLETE          1

/* ---------------------------------------------------------------
   get_msg_info2/put_msg_info2를 사용하고 싶으면,
   _tmax_custom_version = 2 로 변경
---------------------------------------------------------------- */
int _tmax_custom_version = 0;


/* ---------------------------------------------------------------
   get_wsname : 사용자 헤더 중에서 호스트로 서비스를 요청한 클라이언트명을
                반환한다. 호스트로 데이터 전송 전에 호출된다.
   uhead: 사용자 헤더 데이터
   wsname : 클라이언트명이 저장될 buffer
---------------------------------------------------------------- */
int get_wsname(char *uhead, char *wsname)
{
    if (uhead == NULL)
        return 1;

    return 1;
}

/* ---------------------------------------------------------------
   get_msg_info : 호스트 수신 데이터를 사용자가 처리할 수 있는 함수
                  이다. 대화형 모드인 경우에는 반드시 연속 메시지의
                  끝인지를 반환해야한다. 호스트 수신 데이터는 EBCDIC
                  code이다. 호스트에서 Dealloc했을 경우에는 이 함수에
                  서 DATA_INCOMPLETE를 반환하더라도 DATA_COMPLETE로
                  처리한다.
    data: 호스트 수신 데이터
    len : 호스트 수신 데이터 길이
    return : 수신 완료(DATA_COMPLETE), 수신 미완료(DATA_INCOMPLETE)
---------------------------------------------------------------- */
int get_msg_info(char *data, int len)
{
    return DATA_COMPLETE;
}

/* ---------------------------------------------------------------
   put_msg_info : 호스트 송신하기 전에 사용자가 처리할 수 있는 함수
                  이다.
   data: 호스트 송신 데이터
   len : 호스트 송신 데이터 길이
   luname : 호스트 송신 LU명
   return : 성공하면 호스트로 전송할 실제 길이 반환, 실패값 -1을
            반환하면 호스트로 전송하지 않고 오류를 client에 되돌림
---------------------------------------------------------------- */
int put_msg_info(char *data, int len, char *luname)
{
    return len;
}


/* ---------------------------------------------------------------
   get_msg_info2 : 호스트 수신 데이터를 사용자가 처리할 수 있는 함수
                   이다. 대화형 모드인 경우에는 반드시 연속 메시지의
                   끝인지를 반환해야한다. 호스트 수신 데이터는 EBCDIC
                   code 이다. 호스트에서 Dealloc했을 경우에는 이 함수
                   에서 DATA_INCOMPLETE를 반환하더라도 DATA_COMPLETE로
                   처리한다.
    gwinfo: TPGWINFO_T 정보 구조체
    data: 호스트 수신 데이터
    len : 호스트 수신 데이터 길이
    return : 수신 완료(DATA_COMPLETE), 수신 미완료(DATA_INCOMPLETE)
---------------------------------------------------------------- */
int get_msg_info2(TPGWINFO_T *gwinfo, char *data, int len)
{
    return DATA_COMPLETE;
}


/* ---------------------------------------------------------------
   put_msg_info2 : 호스트 송신하기 전에 사용자가 처리할 수 있는 함수
                   이다.
   gwinfo: TPGWINFO_T 정보 구조체
   data: 호스트 송신 데이터
   len : 호스트 송신 데이터 길이
   luname : 호스트 송신 LU명
   return : 성공하면 호스트로 전송할 실제 길이 반환, 실패값 -1을
            반환하면 호스트로 전송하지 않고 오류를 클라이언트에 되돌림
---------------------------------------------------------------- */
int put_msg_info2(TPGWINFO_T *gwinfo, char *data, int len, char *luname)
{
    return len;
}