#ifndef localsrv_h #define localsrv_h /****************************************************************************** * * Header file for local uniVerse server modules * * Module %M% Version %I% Date %H% * * (c) Copyright 1998 Ardent Software Inc. - All Rights Reserved * This is unpublished proprietary source code of Ardent Software Inc. * The copyright notice above does not evidence any actual or intented * publication of such source code. * ******************************************************************************* * * Maintenence log - insert most recent change descriptions at top * * Date.... GTAR# WHO Description......................................... * 08/11/99 24446 SAP Port Linux to 9.5.1 * 10/14/98 23801 SAP Change copyrights. * 06/08/98 21794 CSM Store client uci version in login block * 08/08/96 18994 ENF Save/set the empty_null bit * 06/25/96 18696 MGM Set layer.type in ESTABLISH_LAYER * 04/22/96 18242 ENF Fix warning messages out of ESTABLISH_LAYER * 04/16/96 18162 MJC LAYER macros set layer_count instead of shm_err * 11/27/95 17689 ENF Rename LGIFLAGS => LGIBFLAGS * 05/09/95 16358 AGM Rename FCONTROL as it clashes with NT system name * 05/05/95 15921 ENF Allow ^C abort to work properly locally * 04/25/95 15921 ENF Initial submission. * *****************************************************************************/ /*** Definitions for the local uniVerse server ***/ /*** Define constants for RPC operations ***/ #define UVSRV_LOGON 1 #define UVSRV_OPEN 2 #define UVSRV_ASSOCIATE 3 #define UVSRV_CANCEL 4 #define UVSRV_CLOSE 5 #define UVSRV_COMMIT 6 #define UVSRV_ROLLBACK 7 #define UVSRV_ERRORMESSAGE 8 #define UVSRV_EXEC 9 #define UVSRV_LOGOFF 10 #define UVSRV_DEFINE 11 #define UVSRV_BIND 12 #define UVSRV_nDESCRIBE 13 #define UVSRV_FETCH 14 #define UVSRV_TXBEGIN 15 /*** Define some macros for dealing with the layer structures ***/ #define ESTABLISH_LAYER(errloc) if ((msg_no = UVSETJMP(layer.env)))\ goto errloc;\ else\ {\ SQLsrverr.layer_count++;\ saved_empty_null = SQLsrverr.srverrflg.empty_null;\ if (empty_null) SQLsrverr.srverrflg.empty_null = 1;\ layer.fatal = 0;\ layer.warning = 0;\ layer.type = L_CLIENT;\ layer_setup(&layer);\ } #define RESET_LAYER layer_reset(&layer);\ SQLsrverr.srverrflg.empty_null = saved_empty_null; \ SQLsrverr.layer_count--; #define RESET_LAYER_ERR(cp) unload_err( cp );\ SQLsrverr.layer_count--;\ SQLsrverr.srverrflg.empty_null = saved_empty_null; \ layer_reset(&layer);\ if (Ttype == LOCAL_TRANSPORT && \ msg_no >= 50001 && msg_no <= 50003) fatal_error(msg_no); /*** Define a CursorInfoBlock (CIB). It serves to link together all the *** cursors a client may open. ***/ typedef struct cib { SQLCURSOR *sqlcp; UCIRefNum lognum; struct cib *next; } CIB; /*** Define Login Block Flags ***/ typedef struct { BITMAP manualmode:1, /* 1=> we're in manual mode */ isaschema:1; /* 1=> account we're connected to is a schema */ } LGIBFLAGS; /*** Define a Login Block used to describe things about the connection *** to a client. Each client connection has one login block. ***/ typedef struct lib { char *uid; /* Name of server user id */ char *acct; /* Account string from client */ CIB *cib; /* List of cursors we allocated */ FETCHCTRL fctrl; /* Fetch control area */ LGIBFLAGS libflags; /* Flags block */ SQLCURSOR localcp; /* Cursor for when none is allocated */ int localconnect; /* Local connect established flag */ int lognum; /* login ref num */ int savedisolevel; /* Saved isolation level for auto-commit mode */ short client_version; /* UCI (also for BCI) version of the client */ struct lib *next; /* In case we ever need > 1 */ } LIB; #endif /* end of localsrv_h define */