/**************************************************************************/ /* PLGCNX.H */ /* Copyright to the author: Olivier Bertrand 2000-2012 */ /* */ /* This is the connection DLL's declares. */ /**************************************************************************/ #if !defined(_PLGCNX_H) #define _PLGCNX_H #define MAXMSGLEN 65512 /* Default max length of cnx message */ #define MAXERRMSG 512 /* Max length of error messages */ #define MAXMESSAGE 256 /* Max length of returned messages */ #define MAXDBNAME 128 /* Max length of DB related names */ /**************************************************************************/ /* API Function return codes. */ /**************************************************************************/ enum FNRC {RC_LICENSE = 7, /* PLGConnect prompt for license key */ RC_PASSWD = 6, /* PLGConnect prompt for User/Pwd */ RC_SUCWINFO = 5, /* Succes With Info return code */ RC_SOCKET = 4, /* RC from PLGConnect to socket DLL */ RC_PROMPT = 3, /* Intermediate prompt return */ RC_CANCEL = 2, /* Command was cancelled by user */ RC_PROGRESS = 1, /* Intermediate progress info */ RC_SUCCESS = 0, /* Successful function (must be 0) */ RC_MEMORY = -1, /* Storage allocation error */ RC_TRUNCATED = -2, /* Result has been truncated */ RC_TIMEOUT = -3, /* Connection timeout occured */ RC_TOOBIG = -4, /* Data is too big for connection */ RC_KEY = -5, /* Null ptr to key in Connect */ /* or bad key in other functions */ RC_MAXCONN = -6, /* Too many conn's for one process */ RC_MAXCLIENT = -7, /* Too many clients for one system */ RC_SYNCHRO = -8, /* Synchronization error */ RC_SERVER = -9, /* Error related to the server */ RC_MAXCOL = -10, /* Result has too many columns */ RC_LAST = -10}; /* Other error codes are < this and */ /* are system errors. */ /**************************************************************************/ /* Standard function return codes. */ /**************************************************************************/ #if !defined(RC_OK_DEFINED) #define RC_OK_DEFINED enum RCODE {RC_OK = 0, /* No error return code */ RC_NF = 1, /* Not found return code */ RC_EF = 2, /* End of file return code */ RC_FX = 3, /* Error return code */ RC_INFO = 4}; /* Success with info */ #endif // !RC_OK_DEFINED /**************************************************************************/ /* Index of info values within the info int integer array. */ /**************************************************************************/ enum INFO {INDX_RC, /* Index of PlugDB return code field */ INDX_TIME, /* Index of elapsed time in millisec */ INDX_CHG, /* Index of Language or DB changed */ INDX_RSAV, /* Index of Result Set availability */ INDX_TYPE, /* Index of returned data type field */ INDX_LINE, /* Index of number of lines field */ INDX_LEN, /* Index of line length field */ INDX_SIZE, /* Index of returned data size field */ INDX_MAX}; /* Size of info array */ /**************************************************************************/ /* Internal message types. */ /**************************************************************************/ enum MSGTYP {MST_OPEN = 10, /* Code for old connecting message */ MST_COMMAND = 11, /* Code for send command message */ MST_RESULT = 12, /* Code for get result message */ MST_CLOSE = 13, /* Code for disconnecting message */ MST_PROGRESS = 14, /* Code for progress message */ MST_CANCEL = 15, /* Code for cancel message */ MST_PROCESSED = 16, /* Code for already processed msg */ MST_ERROR = 17, /* Code for get error message */ MST_CHAR = 18, /* Code for get char value message */ MST_LONG = 19, /* Code for get int value message */ MST_COLUMN = 20, /* Code for get col value message */ MST_MESSAGE = 21, /* Code for get message message */ MST_HEADER = 22, /* Code for get header message */ MST_SOCKET = 23, /* Code for socket error message */ MST_SHUTDOWN = 24, /* Code for shutdown message */ MST_SOCKPROG = 25, /* Code for socket progress message */ MST_POST = 26, /* Code for post command message */ MST_NEW_OPEN = 27, /* Code for new connecting message */ MST_PROG_NUM = 5}; /* Num of integers in progress msg */ /**************************************************************************/ /* Vendors. */ /**************************************************************************/ enum VENDOR {VDR_UNKNOWN = -2, /* Not known or not connected */ VDR_PlugDB = -1, /* PlugDB */ VDR_OTHER = 0}; /* OEM */ /**************************************************************************/ /* Attribute keys of Result Description structure (arranged by type). */ /**************************************************************************/ enum CKEYS {K_ProgMsg, K_Lang, K_ActiveDB, K_Cmax}; enum LKEYS {K_NBcol, K_NBlin, K_CurPos, K_RC, K_Result, K_Elapsed, K_Continued, K_Maxsize, K_Lmax, K_Maxcol, K_Maxres, K_Maxlin, K_NBparm}; enum NKEYS {K_Type, K_Length, K_Prec, K_DataLen, K_Nmax}; /**************************************************************************/ /* Result description structures. */ /**************************************************************************/ typedef struct _MsgTagAttr { bool fSupplied; char Attr[MAXMESSAGE]; } MTAG, *PMTAG; typedef struct _CharTagAttr { bool fSupplied; char Attr[MAXDBNAME]; } CTAG, *PCTAG; typedef struct _LongTagAttr { bool fSupplied; int Attr; } LTAG, *PLTAG; typedef struct _ColVar { LTAG Lat[K_Nmax]; CTAG Cat; } COLVAR, *LPCOLVAR; typedef struct _ResDesc { int Maxcol; /* Max number of columns */ int Colnum; /* Number of columns */ MTAG Mat; /* Message */ CTAG Cat[K_Cmax]; /* Character attributes */ LTAG Lat[K_Lmax]; /* Long int attributes */ COLVAR Col[1]; /* Column attributes */ } RDESC, *PRDESC; /**************************************************************************/ /* Exported PlugDB client functions in Plgcnx DLL. */ /**************************************************************************/ #if !defined(CNXFUNC) #if defined(UNIX) || defined(UNIV_LINUX) #undef __stdcall #define __stdcall #endif #if defined(NOLIB) /* Dynamic link of plgcnx.dll */ #define CNXFUNC(f) (__stdcall *f) #else /* LIB */ /* Static link with plgcnx.lib */ #define CNXFUNC(f) __stdcall f #endif #endif #if !defined(CNXKEY) #define CNXKEY uint #endif #if !defined(XTRN) #define XTRN #endif #ifdef NOT_USED //#if !defined(NO_FUNC) #ifdef __cplusplus extern "C" { #endif XTRN int CNXFUNC(PLGConnect) (CNXKEY *, const char *, bool); XTRN int CNXFUNC(PLGSendCommand) (CNXKEY, const char *, void *, int, int *); XTRN int CNXFUNC(PLGGetResult) (CNXKEY, void *, int, int *, bool); XTRN int CNXFUNC(PLGDisconnect) (CNXKEY); XTRN int CNXFUNC(PLGGetErrorMsg) (CNXKEY, char *, int, int *); XTRN bool CNXFUNC(PLGGetCharValue)(CNXKEY, char *, int, int); XTRN bool CNXFUNC(PLGGetIntValue)(CNXKEY, int *, int); XTRN bool CNXFUNC(PLGGetColValue) (CNXKEY, int *, int, int); XTRN bool CNXFUNC(PLGGetMessage) (CNXKEY, char *, int); XTRN bool CNXFUNC(PLGGetHeader) (CNXKEY, char *, int, int); #ifdef __cplusplus } #endif //#endif /* !NO_FUNC */ /**************************************************************************/ /* Convenience function Definitions */ /**************************************************************************/ #define PLGPostCommand(T,C) PLGSendCommand(T,C,NULL,0,NULL) #if defined(FNCMAC) #define PLGGetProgMsg(T,C,S) PLGGetCharValue(T,C,S,K_ProgMsg) #define PLGGetLangID(T,C,S) PLGGetCharValue(T,C,S,K_Lang) #define PLGGetActiveDB(T,C,S) PLGGetCharValue(T,C,S,K_ActiveDB) #define PLGGetCursorPos(T,L) PLGGetIntValue(T,L,K_CurPos) #define PLGGetResultType(T,L) PLGGetIntValue(T,L,K_Result) #define PLGGetNBcol(T,L) PLGGetIntValue(T,L,K_NBcol) #define PLGGetNBlin(T,L) PLGGetIntValue(T,L,K_NBlin) #define PLGGetRetCode(T,L) PLGGetIntValue(T,L,K_RC) #define PLGGetElapsed(T,L) PLGGetIntValue(T,L,K_Elapsed) #define PLGGetContinued(T,L) PLGGetIntValue(T,L,K_Continued) #define PLGGetMaxSize(T,L) PLGGetIntValue(T,L,K_Maxsize) #define PLGGetLength(T,L,C) PLGGetColValue(T,L,K_Length,C) #define PLGGetDataSize(T,L,C) PLGGetColValue(T,L,K_DataLen,C) #define PLGGetDecimal(T,L,C) PLGGetColValue(T,L,K_Prec,C) #define PLGGetType(T,L,C) PLGGetColValue(T,L,K_Type,C) #endif /* FNCMAC */ #endif // NOT_USED #endif /* !_PLGCNX_H */ /* ------------------------- End of Plgcnx.h ---------------------------- */