257 lines
5.3 KiB
C
257 lines
5.3 KiB
C
/****************************************************************
|
|
* *
|
|
* Copyright 2001, 2009 Fidelity Information Services, Inc *
|
|
* *
|
|
* This source code contains the intellectual property *
|
|
* of its copyright holder(s), and is made available *
|
|
* under a license. If you do not know the terms of *
|
|
* the license, please stop and do not read further. *
|
|
* *
|
|
****************************************************************/
|
|
|
|
/*
|
|
* rc.h ---
|
|
*
|
|
* Include file for the GTCM server (RC code).
|
|
*
|
|
* $Header:$
|
|
*
|
|
*/
|
|
|
|
#ifndef RC_H
|
|
#define RC_H
|
|
|
|
#define RC_METHOD 3
|
|
#define RC_MIN_CPT_SIZ 512
|
|
#define RC_AQ_HDR 14
|
|
|
|
/* Operations */
|
|
#define RC_OPEN_DS 0x0001
|
|
#define RC_CLOSE_DS 0x0002
|
|
#define RC_EXCH_INFO 0x0003
|
|
#define RC_LOCK_NAMES 0x0004
|
|
#define RC_LOGIN 0x0005
|
|
#define RC_GET_PAGE 0x0011
|
|
#define RC_GET_RECORD 0x0012
|
|
#define RC_KILL 0x0021
|
|
#define RC_SET 0x0022
|
|
#define RC_SET_FRAG 0x0023
|
|
#define RC_NETTRAX 0x0040
|
|
#define RC_OP_MAX 0x0041
|
|
|
|
/* Modes */
|
|
#define RC_MODE_WRITE 0x001
|
|
#define RC_MODE_WAIT 0x002
|
|
#define RC_MODE_CLEARLOCK 0x020
|
|
#define RC_MODE_DECRLOCK 0x040
|
|
#define RC_MODE_NEXT 0x100
|
|
#define RC_MODE_PREV 0x200
|
|
#define RC_MODE_TREE 0x400
|
|
#define RC_MODE_GET 0x002
|
|
#define RC_MODE_SET 0x003
|
|
#define RC_MODE_KILL 0x403
|
|
|
|
/* Error codes */
|
|
#define RC_ER_NO_ERROR 0
|
|
#define RC_ER_MAX 1
|
|
#define RC_SUCCESS 0x00000
|
|
#define RC_NOFILE 0x000CB
|
|
#define RC_BADFILESPEC 0x000CD
|
|
#define RC_FILEACCESS 0x000DB
|
|
#define RC_GLOBERRUNSPEC 0x0C000
|
|
#define RC_DSALREADYMNT 0x0C022
|
|
#define RC_NETERRNTIMPL 0x0C106
|
|
#define RC_BADXBUF 0x0C131
|
|
#define RC_NETERRDBEDGE 0x0C151
|
|
#define RC_MUMERRUNDEFVAR 0x0D031
|
|
#define RC_KEYTOOLONG 0x0D042
|
|
#define RC_SUBTOOLONG 0x0D044
|
|
#define RC_BADSUBSCRIPT 0x0D047
|
|
#define RC_NETERRRETRY 0x0C10F
|
|
#define RC_NETREQIGN 0x0C11F
|
|
#define RC_LOCKCONFLICT 0x0C0A1
|
|
#define RC_UNDEFNAMSPC 0x0D063
|
|
#define RC_GLOBERRPAGENOTFOUND 0x0C032
|
|
#define RC_GLOBERRINVPAGEADDR 0x0C033
|
|
#define RC_XBLKOVERFLOW 0x0C035
|
|
|
|
|
|
/* Data structures */
|
|
|
|
typedef union rc_byte {
|
|
char octet[SIZEOF(unsigned char)];
|
|
unsigned char value;
|
|
} rc_byte;
|
|
|
|
typedef union rc_word {
|
|
char octet[SIZEOF(unsigned short)];
|
|
unsigned short value;
|
|
} rc_word;
|
|
|
|
typedef union rc_lword {
|
|
char octet[SIZEOF(uint4)];
|
|
uint4 value;
|
|
} rc_lword;
|
|
|
|
/* Operation pointers */
|
|
typedef int (*rc_op)(/* char *, short */);
|
|
|
|
/* XBLK header */
|
|
typedef struct rc_xblk_hdr {
|
|
rc_word end;
|
|
rc_word free;
|
|
rc_byte method;
|
|
rc_byte alert;
|
|
rc_word sync;
|
|
rc_word cpt_tab;
|
|
rc_word cpt_siz;
|
|
rc_word aq_res;
|
|
rc_word resp_max;
|
|
rc_lword client;
|
|
rc_byte alive;
|
|
char filler0;
|
|
rc_word err_aq;
|
|
rc_word last_aq;
|
|
rc_byte big_endian;
|
|
char filler1[5];
|
|
char asm1[32];
|
|
} rc_xblk_hdr;
|
|
|
|
typedef struct rc_xdsid {
|
|
rc_word dsid;
|
|
rc_word node;
|
|
} rc_xdsid;
|
|
|
|
typedef struct rc_xnsid {
|
|
char value[4];
|
|
}rc_xnsid;
|
|
|
|
typedef struct rc_rq_hdr {
|
|
rc_word len;
|
|
rc_word typ;
|
|
rc_word fmd;
|
|
rc_word pid1;
|
|
rc_word pid2;
|
|
rc_xdsid xdsid;
|
|
} rc_rq_hdr;
|
|
|
|
typedef struct rc_aq_hdr {
|
|
rc_word len;
|
|
rc_word typ;
|
|
rc_word erc;
|
|
rc_word pid1;
|
|
rc_word pid2;
|
|
rc_xdsid xdsid;
|
|
} rc_aq_hdr;
|
|
|
|
typedef union rc_q_hdr {
|
|
rc_rq_hdr r;
|
|
rc_aq_hdr a;
|
|
} rc_q_hdr;
|
|
|
|
typedef struct rc_sbkey {
|
|
rc_byte len;
|
|
char key[1];
|
|
} rc_sbkey;
|
|
|
|
typedef struct rc_swstr {
|
|
rc_word len;
|
|
char str[1];
|
|
} rc_swstr;
|
|
|
|
typedef struct rc_lknam {
|
|
rc_xdsid xdsid;
|
|
rc_word node_handle;
|
|
rc_sbkey sb_key;
|
|
} rc_lknam;
|
|
|
|
typedef struct {
|
|
rc_q_hdr hdr;
|
|
rc_word nlocks;
|
|
rc_lknam dlocks[1];
|
|
} rc_req_lock;
|
|
|
|
typedef struct {
|
|
rc_q_hdr hdr;
|
|
char pageaddr[4];
|
|
rc_word offset;
|
|
} rc_req_getp;
|
|
|
|
typedef struct {
|
|
rc_q_hdr hdr;
|
|
rc_sbkey key;
|
|
} rc_req_getr;
|
|
|
|
typedef struct {
|
|
rc_q_hdr hdr;
|
|
char pageaddr[4];
|
|
rc_word frag_offset;
|
|
rc_word size_return;
|
|
rc_word size_remain;
|
|
rc_word before;
|
|
rc_word after;
|
|
rc_word xcc;
|
|
rc_byte rstatus;
|
|
rc_byte zcode;
|
|
char page[1];
|
|
} rc_rsp_page;
|
|
|
|
typedef struct {
|
|
rc_q_hdr hdr;
|
|
rc_xnsid xnsid;
|
|
rc_sbkey key;
|
|
} rc_kill;
|
|
|
|
typedef struct {
|
|
rc_q_hdr hdr;
|
|
rc_xnsid xnsid;
|
|
rc_sbkey key;
|
|
} rc_set;
|
|
|
|
typedef struct {
|
|
rc_q_hdr hdr;
|
|
char license_num[12];
|
|
char license_blk[224];
|
|
} rc_req_logn;
|
|
|
|
typedef struct {
|
|
rc_q_hdr hdr;
|
|
rc_word version;
|
|
rc_word method;
|
|
rc_word session;
|
|
rc_word date;
|
|
char time[4];
|
|
char license_blk[224];
|
|
} rc_rsp_logn;
|
|
|
|
/* Incomplete structure reference ("rc_oflow" in rc/rc_oflow.h) */
|
|
typedef struct rc_oflow rof_struct;
|
|
|
|
#ifdef __STDC__
|
|
#define P(X) X
|
|
#else /* defined(__STDC__) */
|
|
#define P(X) ()
|
|
#endif /* !defined(__STDC__) */
|
|
|
|
/* Routines */
|
|
int rc_prc_opnd P((rc_q_hdr *));
|
|
int rc_prc_lock P((rc_q_hdr *));
|
|
int rc_prc_clsd P((rc_q_hdr *));
|
|
int rc_prc_logn P((rc_q_hdr *));
|
|
int rc_prc_getp P((rc_q_hdr *));
|
|
int rc_prc_getr P((rc_q_hdr *));
|
|
int rc_prc_kill P((rc_q_hdr *));
|
|
int rc_prc_set P((rc_q_hdr *));
|
|
int rc_prc_setf P((rc_q_hdr *));
|
|
rof_struct *rc_oflow_alc P((void));
|
|
void rc_oflow_fin P((rof_struct *));
|
|
void rc_send_cpt P((rc_xblk_hdr *, rc_rsp_page *));
|
|
short rc_fnd_file P((rc_xdsid *));
|
|
int rc_frmt_lck P((char *, int4 , unsigned char *, short , short *));
|
|
void rc_gbl_ord P((rc_rsp_page *));
|
|
void rc_rundown P((void));
|
|
|
|
#undef P
|
|
|
|
#endif /* !defined(RC_H) */
|