헤더 파일
좀 더 자세한 정보를 원하는 사용자를 위해 RQ API들의 원형과 시스템 변수를 선언한 헤더 파일의 내용을 설명한다. Tmax가 제공하는 헤더 파일들은 다음 경로에 위치한다.
TMAXDIR/usrinc
1. tmaxapi.h
/* --------------- usrinc/tmaxapi.h ------------------*/ /* */ /* Copyright (c) 2000 TmaxSoft Co., Ltd */ /* All Rights Reserved */ /* */ /* ---------------------------------------------------*/ #ifndef _TMAXAPI_H #define _TMAXAPI_H #include <sys/types.h> #include <usrinc/atmi.h> #ifdef _WIN32 #include <winsock2.h> #include <usrinc/svct.h> #include <usrinc/sdl.h> #else #include <sys/socket.h> #define __cdecl #endif /* client logout type */ #define CLIENT_CLOSE_NORMAL 0 #define CLIENT_CLOSE_ABNORMAL 1 #define CLIENT_PRUNED 2 /* RQ Sub-queue type */ #define TMAX_ANY_QUEUE 0 #define TMAX_FAIL_QUEUE 1 #define TMAX_REQ_QUEUE 2 #define TMAX_RPLY_QUEUE 3 #define TMAX_MAX_QUEUE 4 extern char _rq_sub_queue_name[TMAX_MAX_QUEUE][XATMI_SERVICE_NAME_LENGTH]; /* RQ related macros */ #define RQ_NAME_LENGTH 16 /* unsolicited msg type */ #define UNSOL_TPPOST 1 #define UNSOL_TPBROADCAST 2 #define UNSOL_TPNOTIFY 3 #define UNSOL_TPSENDTOCLI 4 /* Check SVCINFO cmds */ #define ISSVC_FORWARDED 0x00000001 #define ISSVC_NOREPLY 0x00000002 /* TPEVCTL ctl_flags */ #define TPEV_SVC 0x00000001 #define TPEV_PROC 0x00000002 struct tpevctl { long ctl_flags; long post_flags; char svc[XATMI_SERVICE_NAME_LENGTH]; char qname[RQ_NAME_LENGTH]; }; typedef struct tpevctl TPEVCTL; typedef void __cdecl Unsolfunc(char *, long, long); #define TPUNSOLERR ((Unsolfunc *) -1) /* Multicast call related structures */ struct svglist { int ns_entry; /* number of entries of s_list */ int nf_entry; /* number of entries of f_list */ int *s_list; /* list of server group numbers */ int *f_list; /* list of server group numbers */ }; #if defined (__cplusplus) extern "C" { #endif /* ----- unsolicited messaging API ----- */ long __cdecl tpsubscribe(char *eventexpr, char *filter, TPEVCTL *ctl, long flags); int __cdecl tpunsubscribe(long sd, long flags); int __cdecl tppost(char *eventname, char *data, long len, long flags); int __cdecl tpbroadcast(char *lnid, char *usrname, char *cltname, char *data, long len, long flags); Unsolfunc *__cdecl tpsetunsol(Unsolfunc *func); int __cdecl tpsetunsol_flag(int flag); int __cdecl tpgetunsol(int type, char **data, long *len, long flags); int __cdecl tpclearunsol(void); /* ----- RQS API -------- */ int __cdecl tpenq(char *qname, char *svc, char *data, long len, long flags); int __cdecl tpdeq(char *qname, char *svc, char **data, long *len, long flags); int __cdecl tpqstat(char *qname, long type); int __cdecl tpqsvcstat(char *qname, char *svc, long type); int __cdecl tpextsvcname(char *data, char *svc); int __cdecl tpextsvcinfo(char *data, char *svc, int *type, int *errcode); int __cdecl tpreissue(char *qname, char *filter, long flags); char *__cdecl tpsubqname(int type); /* ----- server API -------- */ int __cdecl tpgetminsvr(void); int __cdecl tpgetmaxsvr(void); int __cdecl tpgetmaxuser(void); int __cdecl tpgetsvrseqno(void); int __cdecl tpgetmysvrid(void); int __cdecl tpgetmaxuser(void); int __cdecl tpsendtocli(int clid, char *data, long len, long flags); int __cdecl tpgetclid(void); int __cdecl tpgetpeer_ipaddr(struct sockaddr *name, int *namelen); int __cdecl tpchkclid(int clid); int __cdecl tmax_clh_maxuser(void); int __cdecl tmax_chk_svcinfo(int cmd); /* ----- etc API ----------- */ int __cdecl tp_sleep(int sec); int __cdecl tp_usleep(int usec); int __cdecl tpset_timeout(int sec); int __cdecl tmaxreadenv(char *file, char *label); char *__cdecl tpgetenv(char* str); int __cdecl tpputenv(char* str); int __cdecl tpgetsockname(struct sockaddr *name, int *namelen); int __cdecl tpgetpeername(struct sockaddr *name, int *namelen); int __cdecl tpgetactivesvr(char *nodename, char **outbufp); int __cdecl tperrordetail(int i); int __cdecl tpreset(void); int __cdecl tptobackup(); struct svglist *__cdecl tpmcall(char *qname, char *svc, char *data, long len, long flags); struct svglist *__cdecl tpgetsvglist(char *svc, long flags); int __cdecl tpsvgcall(int svgno, char *qname, char *svc, char *data, long len, long flags); int __cdecl tpflush(); char *__cdecl tmaxlastsvc(char *idata, char *odata, long flags); #ifndef _TMAX_KERNEL /* ------- User supplied routines ---------- */ int __cdecl tpsvrinit(int argc, char *argv[]); int __cdecl tpsvrdone(); void __cdecl tpsvctimeout(TPSVCINFO *msg); #endif /* Internal functions: ONLY BE CALLED FROM AUTOMATICALLY GENERATED STUB FILES. DO NOT DIRECTLY CALL THESE FUNCTIONS. */ int __cdecl get_clhfd(void); #if defined(_WIN32) int __cdecl _tmax_regfn(void *initFn, void *doneFn, void *timeoutFn, void *userMainFn); int __cdecl _tmax_regtab(int svcTabSz, _svc_t *svcTab, int funcTabSz, void *funcTab); int __cdecl _tmax_regsdl(int _sdl_table_size2, struct _sdl_struct_s *_sdl_table2, int _sdl_field_table_size2, struct _sdl_field_s *_sdl_field_table2); int __cdecl _tmax_main(int argc, char *argv[]); int __cdecl _double_encode(char *in, char *out); int __cdecl _double_decode(char *in, char *out); #endif #if defined (__cplusplus) } #endif #endif /* end of _TMAXAPI_H */