User Functions
This chapter describes the user functions used in SNA LU 0 and SNA LU 6.2.
1. SNA LU 0
Header File
The following is the header file for using user functions.
<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_ */
Source Code File
The following is the source code file for using user functions.
<custom.c>
#include <stdio.h> #include <fcntl.h> #include <string.h> #include <sys/types.h> #include "lu0gw_prototype.h" /* --------------------------------------------------------------- get_msg_info: This function is called when a response data is received from the host. header : User header, NULL check is required snddata : Data to be sent to the host. rcvdata : Data to be received from the host. return : A message is normally returned when the value is greater than 0. If it is 0, the data received from the host is discarded. (treated as NOREPLY) If it is -1, the data received from the host is discarded. (Continues to wait for a message) --------------------------------------------------------------- */ int get_msg_info(char *header, char *snddata, char *rcvdata) { /* If there is no data to send: already timed out */ if (snddata == NULL) return 1; /* must 1 return */ return 1; }
2. SNA LU 6.2
Header File
The following is the header file for using user functions.
<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_ */
Source Code File
The following is the source code file for using user functions.
<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 /* --------------------------------------------------------------- To use get_msg_info2/put_msg_info2, change it to _tmax_custom_version = 2 ---------------------------------------------------------------- */ int _tmax_custom_version = 0; /* --------------------------------------------------------------- get_wsname : Returns the name of the client who requested a service to the host from the user header. This function is called before sending data to the hotst. uhead: User header data wsname : Buffer to store the client name. ---------------------------------------------------------------- */ int get_wsname(char *uhead, char *wsname) { if (uhead == NULL) return 1; return 1; } /* --------------------------------------------------------------- get_msg_info : This function allows user to process the data to be received from the host. In an interactive mode, the end of successive messages must be returned. The data to be received from the host is EBCDIC code. If the host calls dealloc, the data will be processed via DATA_COMPLETE even if this function returns DATA_INCOMPLETE. data: Data received from the host len : Length of data received from the host return: Completed to receive the data (DATA_COMPLETE), Not completed to receive the data (DATA_INCOMPLETE) ---------------------------------------------------------------- */ int get_msg_info(char *data, int len) { return DATA_COMPLETE; } /* --------------------------------------------------------------- put_msg_info : This function allows user process data before they are sent to the host. data: Data sent to the host. len : Length of data sent to the host luname : LU name sent to the host return : If this function succeeds, the length of the actual data to be sent to the host is returned. If this function returns -1, it does not send the data to the host bue returns it to the client. ---------------------------------------------------------------- */ int put_msg_info(char *data, int len, char *luname) { return len; } /* --------------------------------------------------------------- get_msg_info2 : This function allows user to process the data to be received from the host. In an interactive mode, the end of successive messages must be returned. The data to be received from the host is EBCDIC code. If the host calls dealloc, the data will be processed via DATA_COMPLETE even if this function returns DATA_INCOMPLETE. gwinfo: TPGWINFO_T information structure data: Data received from the host len : Length of data received from the host. return : Completed to receive the data (DATA_COMPLETE), Not completed to receive the data (DATA_INCOMPLETE) ---------------------------------------------------------------- */ int get_msg_info2(TPGWINFO_T *gwinfo, char *data, int len) { return DATA_COMPLETE; } /* --------------------------------------------------------------- put_msg_info2 : This function allows user process data before they are sent to a host. gwinfo: TPGWINFO_T information structure data: Data sent to the host. len : Length of data sent to the host. luname : LU name to be sent to the host. return : If this function succeeds, the length of the actual data to be sent to a host is returned. If this function returns -1, it does not send the data to the host but returns it to the client. ---------------------------------------------------------------- */ int put_msg_info2(TPGWINFO_T *gwinfo, char *data, int len, char *luname) { return len; }