fis-gtm/sr_unix/rc.h

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) */