875 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			875 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /* c4com.h   (c)Copyright Sequiter Software Inc., 1988-1996.  All rights reserved. */
 | |
| 
 | |
| #ifdef __cplusplus
 | |
|    extern "C" {
 | |
| #endif
 | |
| 
 | |
| S4EXPORT long S4FUNCTION code4timeout( CODE4 S4PTR * ) ;
 | |
| S4EXPORT void S4FUNCTION code4timeoutSet( CODE4 S4PTR *, long ) ;
 | |
| 
 | |
| #ifdef __cplusplus
 | |
|    }
 | |
| #endif
 | |
| 
 | |
| 
 | |
| #ifndef S4OFF_COMMUNICATIONS
 | |
| 
 | |
| struct CONNECTION4NETSt ;
 | |
| #define CONNECTION4ID long
 | |
| #define COM4DEFAULT_MESSAGE_LEN 1024
 | |
| 
 | |
| #ifndef S4SPX
 | |
|    #ifndef S4WINSOCK
 | |
|       #ifndef S4LOCAL
 | |
|          typedef struct CONNECTION4NETSt
 | |
|          {
 | |
|             void * c4null ;
 | |
|          } CONNECTION4NET ;
 | |
|          typedef struct SOCKET4NETSt
 | |
|          {
 | |
|             void * c4null ;
 | |
|          } SOCKET4NET ;
 | |
|       #endif
 | |
|    #endif
 | |
| #endif
 | |
| 
 | |
| typedef struct PACKET4HEADERSt
 | |
| {
 | |
|    CONNECTION4ID  connectionId ;    /* who is sending the packet? */
 | |
|    long  replyNo ;  /* for a particular request, to ensure duplicate requests are not performed, and etc. */
 | |
|    unsigned char numParts ; /* total #parts to the packet */
 | |
|    unsigned char partNo ;   /* what part # of the packet this part is */
 | |
|    unsigned short int packetDataOffset ;  /* where does the data start in the packet? */
 | |
|    unsigned short int packetDataLen ;     /* what is the data length for this packet? */
 | |
| } PACKET4HEADER ;
 | |
| 
 | |
| typedef struct PACKET4St
 | |
| {
 | |
|    CONNECTION4ID  connectionId ;    /* who is sending the packet? */
 | |
|    long  replyNo ;  /* for a particular request, to ensure duplicate requests are not performed, and etc. */
 | |
|    unsigned char numParts ; /* total #parts to the packet */
 | |
|    unsigned char partNo ;   /* what part # of the packet this part is */
 | |
|    unsigned short int packetDataOffset ;  /* where does the data start in the packet? */
 | |
|    unsigned short int packetDataLen ;     /* what is the data length for this packet? */
 | |
| 
 | |
|    /* if partNo == 0, this header follows... */
 | |
|    short int      type ;
 | |
|    long int dataLen ;
 | |
|    short int      status ;   /* function rc */
 | |
|    long  int      errCode2 ;
 | |
|    long clientDataId ;   /* which client-data4 id is being referred to? */
 | |
|    long serverDataId ;   /* which server-data4 id is being referred to? */
 | |
|    short int      readLock ;
 | |
| /*   short int      lockEnforce ;*/
 | |
|    short int      unlockAuto ;
 | |
|    short int      didUnlock ;     /* did the server perform unlocks for the client? */
 | |
|    short int      didUnlockData ; /* did the server perform data-level unlocks for the client? */
 | |
|    short int      requestLockedInfo ;
 | |
| /*   char     name[S4STAND_ALONE_ALIAS_LEN+1] ;*/
 | |
| /*   char    data[remainingPacketLength] ;*/
 | |
| } PACKET4 ;
 | |
| 
 | |
| typedef struct MESSAGE4St
 | |
| {
 | |
|    LINK4 link ;
 | |
|    #ifdef S4SERVER
 | |
|       struct SERVER4CLIENTSt *client ;
 | |
|    #endif
 | |
|    PACKET4 *packet ;
 | |
|    unsigned short int len ;
 | |
| } MESSAGE4 ;
 | |
| 
 | |
| typedef struct SOCKET4St
 | |
| {
 | |
|    LINK4 link ;
 | |
| 
 | |
|    CODE4 *cb ;
 | |
|    struct SOCKET4NETSt *net ;
 | |
|    struct CONNECTION4St *connect ;
 | |
|    #ifdef S4SERVER
 | |
|       LIST4 connections ;    /* connection list of CONNECTION4's */
 | |
|    #else
 | |
|       char serverName[S4MAX_SERVER_NAME_SIZE] ;
 | |
|    #endif
 | |
|    #ifdef E4ANALYZE
 | |
|       short int initUndone ;
 | |
|    #endif
 | |
| } SOCKET4 ;
 | |
| 
 | |
| typedef struct MESSAGE4DATASt
 | |
| {
 | |
|    LINK4 link ;
 | |
|    S4CONST char *data ;
 | |
|    char *allocatedData ;
 | |
|    unsigned long int len ;
 | |
|    unsigned long int allocLen ;
 | |
|    char didAlloc ;
 | |
| } MESSAGE4DATA ;
 | |
| 
 | |
| typedef struct CONNECTION4St
 | |
| {
 | |
|    LINK4 link ;
 | |
|    LINK4 confirmLink ;
 | |
| 
 | |
|    MESSAGE4 *message ;
 | |
|    LIST4 messageData ;
 | |
|    unsigned short dataLen ;
 | |
|    unsigned long int totalDataLen ;
 | |
| 
 | |
|    char connected ;
 | |
|    short int connectionFailure ;    /* true if a communications failure occurs */
 | |
| 
 | |
|    short int adjustForLocked ;
 | |
| 
 | |
|    SOCKET4 *socket ;
 | |
|    CODE4 *cb ;
 | |
|    struct CONNECTION4NETSt *net ;
 | |
|    LIST4 receivedMessages ;    /* a list of received, unprocessed, partial messages */
 | |
| 
 | |
|    #ifdef E4ANALYZE
 | |
|       short int initUndone ;
 | |
|    #endif
 | |
| } CONNECTION4 ;
 | |
| 
 | |
| /* structures for d4open/d4create communication information between client/server */
 | |
| typedef struct
 | |
| {
 | |
|    unsigned short int headerLen ;
 | |
|    unsigned short int recWidth ;
 | |
|    char version ;
 | |
|    long serverId ;   /* for when referring to the data on the server */
 | |
|    unsigned short int infoLen ;
 | |
|    unsigned short int numTags ;
 | |
|    short int readOnly ;
 | |
|    /* char *info */
 | |
|    /* void *tagInfo (for each tag...) */
 | |
| } CONNECTION4OPEN_INFO_OUT ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    unsigned short int numTags ;
 | |
|    /* void *tagInfo (for each tag...) */
 | |
| } CONNECTION4INDEX_INFO_OUT ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    char name[even4up( LEN4PATH + 1 )] ;
 | |
|    short int errDefaultUnique ;
 | |
|    short int accessMode ;
 | |
|    short int openForCreate ;
 | |
|    unsigned short int readOnly ;
 | |
|    unsigned short int safety ;    /* for catalog only */
 | |
|    unsigned short int singleOpen ;
 | |
|    unsigned short int log ;
 | |
| } CONNECTION4OPEN_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    char password[even4up( LEN4DATA_ALIAS + 1 )] ;
 | |
| } CONNECTION4PASSWORD_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    short int accessMode ;
 | |
|    unsigned short int readOnly ;
 | |
|    short int nameLen ;
 | |
|    short int errDefaultUnique ;
 | |
|    short int openForCreate ;
 | |
|    unsigned short int safety ;    /* for catalog only */
 | |
| /*   char accessName[nameLen] ;*/
 | |
| } CONNECTION4OPEN_INDEX_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    unsigned short int numTags ;
 | |
|    /* void *tagInfo (for each tag...) */
 | |
| } CONNECTION4OPEN_INDEX_INFO_OUT ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    short int accessMode ;
 | |
|    unsigned short int readOnly ;
 | |
|    short int nameLen ;
 | |
|    short int errDefaultUnique ;
 | |
|    short int openForCreate ;
 | |
|    unsigned short int safety ;    /* for catalog only */
 | |
|    char tagName[even4up( LEN4PATH + 1 )] ;
 | |
|    short int hasIndex ;
 | |
|    char indexName[even4up( LEN4PATH + 1 )] ;  /* if t4open is deriving from i4open */
 | |
| /*   char indexName[nameLen] ;*/
 | |
| } CONNECTION4OPEN_TAG_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    short int autoOpened ;   /* flag for whether or not server had to do the open */
 | |
| /*    void *tagInfo (for each tag...) */
 | |
| } CONNECTION4OPEN_TAG_INFO_OUT ;
 | |
| 
 | |
| typedef union
 | |
| {
 | |
|    char S4PTR *ptr ;
 | |
|    unsigned short int offset ;
 | |
| } CONNECTION4PTR_UNION ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    CONNECTION4PTR_UNION name ;
 | |
|    short int         type ;
 | |
|    unsigned short int len ;
 | |
|    unsigned short int dec ;
 | |
|    unsigned short int nulls ;
 | |
| } CONNECTION4FIELD_INFO ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    CONNECTION4PTR_UNION name ;
 | |
|    CONNECTION4PTR_UNION expression ;
 | |
|    CONNECTION4PTR_UNION filter ;
 | |
|    short int unique ;
 | |
|    unsigned short int descending ;
 | |
|    /* void *data */
 | |
| } CONNECTION4TAG_INFO ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    char     name[even4up( LEN4PATH + 1 )] ;
 | |
|    unsigned short int numFields ;
 | |
|    unsigned short int numTags ;
 | |
|    unsigned short int fieldInfoLen ;
 | |
|    unsigned short int createTemp ;      /* temporary create only ( name null ) */
 | |
|    unsigned short int safety ;
 | |
|    unsigned short int readOnly ;        /* for catalog purposes */
 | |
|    unsigned short int log ;
 | |
|    short int compatibility ;            /* what type of data file to create */
 | |
| /*   unsigned short int tagInfoLen ;*/
 | |
|    /* start of info... */
 | |
| } CONNECTION4CREATE_INFO_IN ;
 | |
| 
 | |
| /*typedef struct*/
 | |
| /*{*/
 | |
| /*   char     name[even4up( LEN4PATH + 1 )] ;*/
 | |
| /*} CONNECTION4CREATE_TEMP_INFO_OUT ;*/
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    short int catalogAdd ;
 | |
|    short int catalogStatus ;
 | |
| } CONNECTION4CATALOG_SET_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    short int isProduction ;
 | |
|    unsigned short int numTags ;
 | |
|    char indexFileName[even4up( LEN4PATH + 1 )] ;
 | |
|    unsigned short int createTemp ;      /* temporary create only ( name null ) */
 | |
|    unsigned short int safety ;
 | |
|    unsigned short int readOnly ;        /* for catalog purposes */
 | |
|    /* start of info... */
 | |
| } CONNECTION4INDEX_CREATE_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    char indexFileName[even4up( LEN4PATH + 1 )] ;
 | |
|    unsigned short int numTags ;
 | |
|    /* start of info... */
 | |
| } CONNECTION4TAG_ADD_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    short int lockedDatafile ;
 | |
| } CONNECTION4TAG_ADD_INFO_OUT ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    short int lockedDatafile ;
 | |
| } CONNECTION4INDEX_CREATE_INFO_OUT ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    short int lockedDatafile ;
 | |
| } CONNECTION4REINDEX_INFO_OUT ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    short int lockedDatafile ;
 | |
| } CONNECTION4CHECK_INFO_OUT ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    short int lockedDatafile ;
 | |
| } CONNECTION4PACK_INFO_OUT ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    short int lockedDatafile ;
 | |
| } CONNECTION4ZAP_INFO_OUT ;
 | |
| 
 | |
| /*
 | |
| typedef struct
 | |
| {
 | |
| } CONNECTION4INDEX_CLOSE_INFO_IN ;
 | |
| */
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    short int  usesTag ;
 | |
|    char tagName[even4up( LEN4TAG_ALIAS + 1 )] ;
 | |
|    long startRecno ;
 | |
| } CONNECTION4DATA_POS_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    double position ;
 | |
| } CONNECTION4DATA_POS_OUT ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    double position ;
 | |
|    short int  usesTag ;
 | |
|    char tagName[even4up( LEN4TAG_ALIAS + 1 )] ;
 | |
| } CONNECTION4DATA_POS_SET_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    long recNo ;
 | |
| } CONNECTION4DATA_POS_SET_OUT ;
 | |
| 
 | |
| /* structures for d4seek communication information between client/server */
 | |
| typedef struct
 | |
| {
 | |
|    char tagName[even4up( LEN4TAG_ALIAS + 1 )] ;
 | |
|    unsigned short int keyLen ;
 | |
|    unsigned short int fromCurrentPos ;
 | |
|    long startPos ;  /* for seek next */
 | |
|    /* char *key */
 | |
| } CONNECTION4SEEK_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    char tagName[even4up( LEN4TAG_ALIAS + 1 )] ;
 | |
|    long recno ;
 | |
| } CONNECTION4TAG_SYNCH_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    long recNo ;
 | |
| } CONNECTION4TAG_SYNCH_INFO_OUT ;
 | |
| 
 | |
| /* structures for d4skip communication information between client/server */
 | |
| typedef struct
 | |
| {
 | |
|    char tagName[even4up( LEN4TAG_ALIAS + 1 )] ;
 | |
|    short int usesTag ;
 | |
|    long startPos ;
 | |
|    long numSkip ;
 | |
| } CONNECTION4SKIP_INFO_IN ;
 | |
| 
 | |
| #ifndef S4SINGLE
 | |
| /*
 | |
| typedef struct
 | |
| {
 | |
|    short int type ;
 | |
|    long  recNum ;
 | |
|    long clientId ;
 | |
|    long serverId ;
 | |
| } CONNECTION4LOCK_SINGLE_INFO_IN ;
 | |
| */
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    short int numLocks ;
 | |
|    /* locks */
 | |
| } CONNECTION4LOCK_GROUP_INFO_IN ;
 | |
| #endif
 | |
| 
 | |
| /* structures for d4go communication information between client/server */
 | |
| typedef struct
 | |
| {
 | |
|    long recNo ;
 | |
| } CONNECTION4GO_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    short int skipRc ;    /* used by d4skip to distinguish return codes */
 | |
|    short int recordLocked ;
 | |
|    long recNo ;
 | |
| /*   char *record ;  */
 | |
| } CONNECTION4GO_INFO_OUT ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    char tagName[even4up( LEN4TAG_ALIAS + 1 )] ;
 | |
|    short int  usesTag ;
 | |
| } CONNECTION4TOP_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    long recNo ;
 | |
|    short int recordLocked ;
 | |
|    short int eofFlag ;
 | |
|    short int bofFlag ;
 | |
| /*   char *record ; */
 | |
| } CONNECTION4TOP_INFO_OUT ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    char tagName[even4up( LEN4TAG_ALIAS + 1 )] ;
 | |
|    short int  usesTag ;
 | |
| } CONNECTION4BOTTOM_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    char calcName[even4up( E4MAX_CALC_NAME ) ] ;
 | |
| /*   char *expr */
 | |
| } CONNECTION4CALC_CREATE_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    long recNo ;
 | |
|    short int recordLocked ;
 | |
|    short int eofFlag ;
 | |
|    short int bofFlag ;
 | |
| /*   char *record ; */
 | |
| } CONNECTION4BOTTOM_INFO_OUT ;
 | |
| 
 | |
| /* structure for d4recCount communication information between client/server */
 | |
| typedef struct
 | |
| {
 | |
|    long recCount ;
 | |
|    short int  appendLocked ;
 | |
| } CONNECTION4RECCOUNT_INFO_OUT ;
 | |
| 
 | |
| #ifndef S4SINGLE
 | |
| /* structures for d4lock communication information between client/server */
 | |
| typedef struct
 | |
| {
 | |
|    short int type ;
 | |
|    short int test ;    /* are we testing for a lock only? */
 | |
|    /* record info if appropriate */
 | |
| } CONNECTION4LOCK_INFO_IN ;
 | |
| #endif
 | |
| 
 | |
| /* structures for d4write communication information between client/server */
 | |
| typedef struct
 | |
| {
 | |
|    long recNo ;
 | |
|    short int numMemoFields ;   /* number of memo fields with data included */
 | |
|    short int unlock ;   /* should a general unlock call be performed (d4appendStart) */
 | |
|    /* char record[recWidth] */
 | |
|    /* CONNECTION4MEMO memo[numMemoFields] */
 | |
| } CONNECTION4WRITE_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    short int recordLocked ;
 | |
| } CONNECTION4WRITE_INFO_OUT ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    unsigned short int fieldNum ;
 | |
|    unsigned long int memoLen ;
 | |
|    /* char memo[memoLen] */
 | |
| } CONNECTION4MEMO ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    long recNo ;
 | |
|    short int fieldNo ;
 | |
| } CONNECTION4MEMO_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    unsigned long int memoLen ;
 | |
|    /* char memo[memoLen] */
 | |
| } CONNECTION4MEMO_INFO_OUT ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    short int numMemoFields ;   /* number of memo fields with data included */
 | |
|    /* char record[recWidth] */
 | |
|    /* CONNECTION4MEMO memo[numMemoFields] */
 | |
| } CONNECTION4APPEND_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    short int bofFlag ;
 | |
|    short int eofFlag ;
 | |
|    short int recordChanged ;
 | |
|    short int recordLocked ;
 | |
|    short int appendLocked ;
 | |
|    long recNum ;
 | |
| } CONNECTION4APPEND_INFO_OUT ;
 | |
| 
 | |
| /* structures for d4zap communication information between client/server */
 | |
| typedef struct
 | |
| {
 | |
|    long recStart ;
 | |
|    long recStop ;
 | |
| } CONNECTION4ZAP_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    unsigned short int numServers ;
 | |
|    /* start of info... */
 | |
| } CONNECTION4COMMIT_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    char alias[even4up( LEN4TAG_ALIAS + 1 )] ;
 | |
|    short int unique ;
 | |
| } CONNECTION4UNIQUE_TAG_INFO ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    unsigned short int numTags ;
 | |
| /* for each tag...
 | |
|    CONNECTION4UNIQUE_TAG_INFO tags[numTags] ;
 | |
| */
 | |
| } CONNECTION4UNIQUE_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    char dateFormat[20] ;
 | |
| } CONNECTION4DATE_FORMAT_SET_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    short int matchLen ;
 | |
|    short int relationType ;
 | |
| /*   short int sortType ;*/
 | |
|    short int errorAction ;
 | |
|    short int numSlaves ;
 | |
|    short int dataId ;
 | |
|    long clientId ;
 | |
|    CONNECTION4PTR_UNION dataTagName ;
 | |
|    CONNECTION4PTR_UNION masterExpr ;
 | |
|    CONNECTION4PTR_UNION dataAccessName ;
 | |
| } CONNECTION4RELATE ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    unsigned short int skipBackwards ;
 | |
|    CONNECTION4PTR_UNION exprSource ;
 | |
|    CONNECTION4PTR_UNION sortSource ;
 | |
| } CONNECTION4RELATION ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    unsigned long relationId ;
 | |
|    unsigned short int relateOffset ;
 | |
|    unsigned short int flexOffset ;
 | |
|    long masterClientId ;
 | |
|    CONNECTION4RELATION relation ;
 | |
|    unsigned short int bitmapDisable ;
 | |
| /*   CONNECTION4RELATE relates[] ; */
 | |
| /*   flex data */
 | |
| } CONNECTION4RELATE_INIT_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    unsigned long relationId ;
 | |
| /* list of relateid's for each relate */
 | |
| } CONNECTION4RELATE_INIT_INFO_OUT ;
 | |
| 
 | |
| /* the output from relate4top, relate4bottom, relate4skip, relate4seek */
 | |
| typedef struct
 | |
| {
 | |
|    unsigned long relationId ;
 | |
|    /* record_num, record_count, record for each record */
 | |
| } CONNECTION4RELATION_DATA_OUT ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    unsigned long relationId ;
 | |
| } CONNECTION4RELATE_TOP_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    unsigned long relationId ;
 | |
|    long numSkips ;
 | |
| } CONNECTION4RELATE_SKIP_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    unsigned long relationId ;
 | |
| } CONNECTION4RELATE_BOTTOM_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    unsigned long relationId ;
 | |
| } CONNECTION4RELATE_OPT_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    unsigned long relationId ;
 | |
|    unsigned short int relateId ;
 | |
|    long masterStartPos ;
 | |
| } CONNECTION4RELATE_DO_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    unsigned long relationId ;
 | |
|    unsigned short int relateId ;
 | |
|    long masterStartPos ;
 | |
| } CONNECTION4RELATE_DO_ONE_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    long recNo ;
 | |
| } CONNECTION4RELATE_DO_ONE_INFO_OUT ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    unsigned long eof ;
 | |
| } CONNECTION4TRAN_EOF_INFO_OUT ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    unsigned long eof ;
 | |
| } CONNECTION4TRAN_EOF_HALT_INFO_OUT ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    unsigned long relationId ;
 | |
| } CONNECTION4RELATE_FREE_INFO_IN ;
 | |
| 
 | |
| /*
 | |
| typedef struct
 | |
| {
 | |
|    unsigned long relationId ;
 | |
| } CONNECTION4RELATE_CHANGED_INFO_IN ;
 | |
| */
 | |
| 
 | |
| #ifndef S4SINGLE
 | |
| typedef struct
 | |
| {
 | |
|    long clientId ;
 | |
|    long serverId ;
 | |
| } CONNECTION4RELATE_LOCK_SUB_DATA ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    unsigned long relationId ;
 | |
| } CONNECTION4RELATE_LOCK_INFO_IN ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    unsigned short int count ;
 | |
| } CONNECTION4RELATE_LOCK_INFO_OUT ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    unsigned long relationId ;
 | |
| } CONNECTION4RELATE_UNLOCK_INFO_IN ;
 | |
| 
 | |
| /*typedef struct*/
 | |
| /*{*/
 | |
| /*   unsigned long unlockAuto ;*/
 | |
| /*} CONNECTION4UNLOCK_INFO_IN ;*/
 | |
| 
 | |
| /*typedef struct*/
 | |
| /*{*/
 | |
| /*   unsigned short int unlockedData ;*/
 | |
| /*} CONNECTION4LOCK_INFO_OUT ;*/
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    long lockPos ;  /* ( record no if > 0, appendBytes if 0, file if -1 ) */
 | |
| /*   char fileName[] ;*/
 | |
| /*   char userId[] ;*/
 | |
| /*   char netId[] ;*/
 | |
| } CONNECTION4LOCKED_INFO_OUT ;
 | |
| #endif
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    long clientId ;
 | |
|    unsigned short int numData ;
 | |
|    unsigned short int numRelate ;
 | |
|    unsigned long numRequests ;
 | |
|    unsigned long numTransactions ;
 | |
|    unsigned long numCompletedTransactions ;
 | |
|    unsigned long numRollbacks ;
 | |
|    short int activeTransaction ;   /* is there a current transaction? */
 | |
|    double elapsedSeconds ;
 | |
| } CONNECTION4CLIENT_INFO ;
 | |
| 
 | |
| typedef struct
 | |
| {
 | |
|    long clientId ;
 | |
| } CONNECTION4CLIENT_CANCEL_INFO_IN ;
 | |
| 
 | |
| typedef struct CONNECTION4SERVER_INFO_OUTSt
 | |
| {
 | |
|    long memMax ;
 | |
|    long memAlloc ;
 | |
|    unsigned long numRequests ;
 | |
|    unsigned short int numClients ;
 | |
|    double elapsedSeconds ;
 | |
|    /* CONNECTION4CLIENT_INFO clients[numClients] */
 | |
| } CONNECTION4SERVER_INFO_OUT ;
 | |
| 
 | |
| #ifdef __cplusplus
 | |
|    extern "C" {
 | |
| #endif
 | |
| int    connection4clear( CONNECTION4 * ) ;
 | |
| #define connection4addData( a, b, c, d ) ( connection4insertData( (a), (b), (c), (d), 0 ) )
 | |
| CONNECTION4 *connection4alloc( SOCKET4 * ) ;
 | |
| #define packet4didUnlockData( p ) ( (p)->didUnlockData )
 | |
| 
 | |
| int connection4disconnect( CONNECTION4 * ) ;
 | |
| int connection4errorDescribeExecute( const CONNECTION4 *, CODE4 *, int, long, const char *, const char *, const char * ) ;
 | |
| int connection4free( CONNECTION4 * ) ;
 | |
| int connection4init( CONNECTION4 *, SOCKET4 * ) ;
 | |
| int connection4initUndo( CONNECTION4 * ) ;
 | |
| int connection4insertData( CONNECTION4 *, const void *, const unsigned int, const int, const int ) ;
 | |
| #define connection4requestLockedInfo( c ) ( packet4requestLockedInfo( (c)->message->packet ) )
 | |
| int connection4setStatus( CONNECTION4 *, const int ) ;
 | |
| #define connection4yield( c ) ( socket4netYield( (c)->socket->net ) )
 | |
| 
 | |
| #ifdef S4UTILS
 | |
|    int S4FUNCTION connection4assign( CONNECTION4 *, const int, const long, const long ) ;
 | |
|    S4CONST char * S4FUNCTION connection4dataOffset( const CONNECTION4 *, const unsigned int ) ;
 | |
|    int S4FUNCTION connection4receive( CONNECTION4 * ) ;
 | |
|    int S4FUNCTION connection4send( CONNECTION4 * ) ;
 | |
| #else
 | |
|    int connection4assign( CONNECTION4 *, const int, const long, const long ) ;
 | |
|    S4CONST char *connection4dataOffset( const CONNECTION4 *, const unsigned int ) ;
 | |
|    int connection4receive( CONNECTION4 * ) ;
 | |
|    int connection4send( CONNECTION4 * ) ;
 | |
| #endif
 | |
| 
 | |
| #ifndef S4SERVER
 | |
|    int connection4repeat( CONNECTION4 *, const int, const int, const int, DATA4 * ) ;
 | |
| #endif
 | |
| #ifdef E4PARM_LOW
 | |
|    int  connection4type( const CONNECTION4 * ) ;
 | |
|    long connection4errCode2( const CONNECTION4 * ) ;
 | |
|    S4EXPORT int connection4status( const CONNECTION4 * ) ;
 | |
|    int  connection4setLen( CONNECTION4 *, const long int ) ;
 | |
|    void  connection4setRequestLockedInfo( CONNECTION4 *, int ) ;
 | |
|    long connection4clientId( const CONNECTION4 * ) ;
 | |
|    S4CONST char *connection4data( const CONNECTION4 * ) ;
 | |
|    int    connection4free( CONNECTION4 * ) ;
 | |
|    long   connection4id( const CONNECTION4 * ) ;
 | |
|    int    connection4didUnlock( const CONNECTION4 * ) ;
 | |
|    int    connection4readLock( const CONNECTION4 * ) ;
 | |
|    int    connection4unlockAuto( const CONNECTION4 * ) ;
 | |
|    long connection4serverId( const CONNECTION4 * ) ;
 | |
|    long int  connection4len( const CONNECTION4 * ) ;
 | |
|    int    socket4free( SOCKET4 * ) ;
 | |
|    int    socket4init( SOCKET4 *, CODE4 *, const char *, const char * ) ;
 | |
|    #ifdef S4SERVER
 | |
|       int    socket4shutdownAdvertising( SOCKET4 * ) ;
 | |
|    #endif
 | |
|    void packet4setDidUnlock( PACKET4 *, const int ) ;
 | |
|    int packet4requestLockedInfo( const PACKET4 * ) ;
 | |
| #else
 | |
|    #define connection4type( c ) ( packet4type( (c)->message->packet ) )
 | |
|    #define connection4errCode2( c ) ( packet4errCode2( (c)->message->packet ) )
 | |
|    #define connection4status( c ) ( packet4status( (c)->message->packet ) )
 | |
|    #define connection4setLen( c, l ) ( packet4setLen( (c)->message->packet, (l) ) )
 | |
|    #define connection4setRequestLockedInfo( c, v ) ( packet4setRequestLockedInfo( (c)->message->packet, (v) ) )
 | |
|    #define connection4clientId( c ) ( ((c)->message == 0) ? 0 : packet4clientId( (c)->message->packet ) )
 | |
|    #define connection4data( c ) ( connection4dataOffset( (c), 0 ) )
 | |
|    #define connection4free( c ) ( ((c) == 0 ) ? 0 : ( mem4free( (c)->cb->connectionMemory, c ), 0 ) )
 | |
|    #define connection4id( c ) ( ((c) == 0 ) ? 0 : ( connection4netId( (c)->net ) ) )
 | |
|    #define connection4didUnlock( c ) ( packet4didUnlock( (c)->message->packet ) )
 | |
|    #define connection4readLock( c ) ( packet4readLock( (c)->message->packet ) )
 | |
|    #define connection4unlockAuto( c ) ( packet4unlockAuto( (c)->message->packet ) )
 | |
|    #define connection4serverId( c ) ( packet4serverId( (c)->message->packet ) )
 | |
|    #define connection4len( c ) ( packet4len( (c)->message->packet ) - (c)->adjustForLocked )
 | |
|    #define socket4free( s ) ( ( (s) == 0 ) ? 0 : ( u4free( s ), 0 ) )
 | |
|    #ifdef S4SERVER
 | |
|       #define socket4init( s, c4, sn, pi ) ( ((s)->cb = (c4)), ( socket4netInitServer( (s)->net, (sn), (pi) ) ) )
 | |
|       #define socket4shutdownAdvertising( s ) ( socket4netShutdownAdvertising( (s)->net ) )
 | |
|    #else
 | |
|       #define socket4init( s, c4, sn, pi ) ( ( (s)->cb = (c4) ), 0 )
 | |
|    #endif
 | |
|    #define packet4len( p ) ( (p)->dataLen )
 | |
|    #define packet4setLen( p, l ) ( ( (p)->dataLen = (l) ), 0 )
 | |
|    #define packet4setStatus( p, s ) ( ( (p)->status = (s) ) )
 | |
|    #define packet4setType( p, t ) ( ( (p)->type = (t) ) )
 | |
|    #define packet4status( p ) ( (p)->status )
 | |
|    #define packet4setErrCode2( p, e ) ( ((p)->errCode2 = (e)), 0 )
 | |
|    #define packet4errCode2( p ) ( (p)->errCode2 )
 | |
|    #define packet4type( p ) ( (p)->type )
 | |
|    #define packet4serverId( p ) ( (p)->serverDataId )
 | |
|    #define packet4clientId( p ) ( (p)->clientDataId )
 | |
|    #define packet4readLock( p ) ( (p)->readLock )
 | |
|    #define packet4didUnlock( p ) ( (p)->didUnlock )
 | |
|    #define packet4setRequestLockedInfo( p, r )  ( ((p)->requestLockedInfo = (r)) )
 | |
|    #define packet4unlockAuto( p ) ( (p)->unlockAuto )
 | |
|    #define packet4setClientId( p, i ) ( ((p)->clientDataId = (i)) )
 | |
|    #define packet4setServerId( p, i ) ( ((p)->serverDataId = (i)) )
 | |
|    #define packet4setReadLock( p, r ) ( ((p)->readLock = (r)) )
 | |
|    #define packet4requestLockedInfo( p ) ( (p)->requestLockedInfo )
 | |
|    #define packet4setDidUnlock( p, v ) ( ((p)->didUnlock = (v)) )
 | |
|    #define packet4setUnlockAuto( p, v ) ( ((p)->unlockAuto = (v)) )
 | |
|    #define packet4partNo( p ) ( (p)->partNo )
 | |
|    #define packet4numParts( p ) ( (p)->numParts )
 | |
| #endif
 | |
| 
 | |
| #ifdef E4FILE_LINE
 | |
|    #define connection4error( a, b, c, d ) ( s4fileName = __FILE__ , s4lineNo = __LINE__ , connection4errorDescribeExecute( a, b, c, d, 0, 0, 0 ) )
 | |
|    #define connection4errorDescribe( a, b, c, d, e, f, g ) ( s4fileName = __FILE__ , s4lineNo = __LINE__ , connection4errorDescribeExecute( a, b, c, d, e, f, g ) )
 | |
| #else
 | |
|    #define connection4error( a, b, c, d ) ( connection4errorDescribeExecute( a, b, c, d, 0, 0, 0 ) )
 | |
|    #define connection4errorDescribe( a, b, c, d, e, f, g ) ( connection4errorDescribeExecute( a, b, c, d, e, f, g ) )
 | |
| #endif
 | |
| 
 | |
| CONNECTION4 * socket4receiveMessage( SOCKET4 * ) ;
 | |
| SOCKET4 * socket4alloc( CODE4 * ) ;
 | |
| int    socket4connect( SOCKET4 *, const char *, const char * ) ;
 | |
| CODE4 S4PTR *S4FUNCTION socket4codeBase( SOCKET4 S4PTR * ) ;
 | |
| int    socket4initUndo( SOCKET4 * ) ;
 | |
| MESSAGE4 *socket4receive( SOCKET4 * ) ;
 | |
| 
 | |
| struct SOCKET4NETSt S4PTR * S4FUNCTION socket4netAlloc( SOCKET4 S4PTR * ) ;
 | |
| int    S4FUNCTION socket4netInitUndo( struct SOCKET4NETSt S4PTR * ) ;
 | |
| int    S4FUNCTION socket4netFree( struct SOCKET4NETSt S4PTR * ) ;
 | |
| void   S4FUNCTION socket4netYield( const struct SOCKET4NETSt S4PTR * ) ;
 | |
| 
 | |
| struct CONNECTION4NETSt S4PTR * S4FUNCTION connection4netAlloc( struct SOCKET4NETSt S4PTR * ) ;
 | |
| int    S4FUNCTION connection4netDisconnect( struct CONNECTION4NETSt S4PTR * ) ;
 | |
| int    S4FUNCTION connection4netFree( struct CONNECTION4NETSt S4PTR * ) ;
 | |
| CONNECTION4ID S4FUNCTION connection4netId( const struct CONNECTION4NETSt S4PTR * ) ;
 | |
| int    S4FUNCTION connection4netInit( struct CONNECTION4NETSt S4PTR *, struct SOCKET4NETSt S4PTR * ) ;
 | |
| int    S4FUNCTION connection4netInitUndo( struct CONNECTION4NETSt S4PTR * ) ;
 | |
| int    S4FUNCTION connection4netSend( struct CONNECTION4NETSt S4PTR *, const MESSAGE4 S4PTR * ) ;
 | |
| CONNECTION4ID S4FUNCTION connection4netDestId( const struct CONNECTION4NETSt S4PTR * ) ;
 | |
| S4CONST unsigned short S4FUNCTION connection4netMessageLen( struct CONNECTION4NETSt S4PTR * ) ;
 | |
| MESSAGE4 S4PTR * S4FUNCTION socket4netReceive( struct SOCKET4NETSt S4PTR * ) ;
 | |
| S4CONST int connection4netMessageSendLen( struct CONNECTION4NETSt * ) ;
 | |
| char *connection4netMessageSendData( struct CONNECTION4NETSt * ) ;
 | |
| int packet4copy( PACKET4 *, PACKET4 *, unsigned int ) ;
 | |
| #define packet4setDidUnlockData( p, v ) ( ((p)->didUnlockData = (v)) )
 | |
| S4EXPORT struct MESSAGE4St S4PTR *S4FUNCTION message4alloc( CODE4 S4PTR *, unsigned int ) ;
 | |
| S4EXPORT void S4FUNCTION message4free( CODE4 S4PTR *, struct MESSAGE4St S4PTR * ) ;
 | |
| void message4release( CODE4 * ) ;
 | |
| /* cannot be inline due to DLL CODE4 structure potential mismatches */
 | |
| 
 | |
| #ifdef S4DISTRIBUTED
 | |
|    CONNECTION4ID S4FUNCTION connection4netSourceId( const struct CONNECTION4NETSt S4PTR * ) ;
 | |
| #endif
 | |
| 
 | |
| #ifdef S4SERVER
 | |
|    char  *S4FUNCTION connection4netUserId( struct CONNECTION4NETSt S4PTR * ) ;
 | |
|    int socket4verifyConnections( SOCKET4 * ) ;
 | |
|    int socket4connected( SOCKET4 * ) ;
 | |
|    int S4FUNCTION socket4netShutdownAdvertising( struct SOCKET4NETSt S4PTR * ) ;
 | |
|    int S4FUNCTION connection4netDisconnected( struct CONNECTION4NETSt S4PTR * ) ;
 | |
|    int S4FUNCTION socket4netConnected( struct SOCKET4NETSt S4PTR * ) ;
 | |
|    int S4FUNCTION socket4netConnectClient( struct SOCKET4NETSt S4PTR *, CONNECTION4 S4PTR *, struct CONNECTION4NETSt S4PTR * ) ;
 | |
|    int S4FUNCTION socket4netInitServer( struct SOCKET4NETSt S4PTR *, const char *, const char * ) ;
 | |
| #endif
 | |
| #ifndef S4SERVER
 | |
|    int    S4FUNCTION socket4netConnectServer( struct SOCKET4NETSt S4PTR *, struct CONNECTION4NETSt S4PTR *, const char S4PTR *, const char S4PTR * ) ;
 | |
| #endif
 | |
| 
 | |
| #ifdef __cplusplus
 | |
|    }
 | |
| #endif
 | |
| 
 | |
| #endif  /* S4OFF_COMMUNICATIONS */
 |