X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=ir-tclp.h;h=c4635ae02d6177af3c00192935a900089e810068;hb=9ce66eda95f4ef797782d491011687e338b055d8;hp=e5b03b64d0ba81cf71b167bf1132045523235bb6;hpb=5139a081952de0c231f53bc4876655e0fcecd994;p=ir-tcl-moved-to-github.git diff --git a/ir-tclp.h b/ir-tclp.h index e5b03b6..c4635ae 100644 --- a/ir-tclp.h +++ b/ir-tclp.h @@ -5,7 +5,21 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: ir-tclp.h,v $ - * Revision 1.12 1995-07-28 10:28:38 adam + * Revision 1.16 1995-09-20 11:37:01 adam + * Configure searches for tk4.1 and tk7.5. + * Work on GRS. + * + * Revision 1.15 1995/08/29 15:30:15 adam + * Work on GRS records. + * + * Revision 1.14 1995/08/04 11:32:40 adam + * More work on output queue. Memory related routines moved + * to mem.c + * + * Revision 1.13 1995/08/03 13:23:00 adam + * Request queue. + * + * Revision 1.12 1995/07/28 10:28:38 adam * First work on request queue. * * Revision 1.11 1995/06/20 08:07:35 adam @@ -96,9 +110,10 @@ typedef struct { char *cs_type; int protocol_type; - int connectFlag; int failInfo; COMSTACK cs_link; + + int state; int preferredMessageSize; int maximumRecordSize; @@ -121,12 +136,8 @@ typedef struct { char *hostname; - char *buf_out; - int len_out; char *buf_in; int len_in; - char *sbuf; - int slen; ODR odr_in; ODR odr_out; ODR odr_pr; @@ -138,27 +149,20 @@ typedef struct { #if CCL2RPN CCL_bibset bibset; #endif - - struct IrTcl_SetObj_ *set_child; - struct IrTcl_ScanObj_ *scan_child; struct IrTcl_Request_ *request_queue; IrTcl_SetCObj set_inher; } IrTcl_Obj; typedef struct IrTcl_Request_ { - char *name_of_object; struct IrTcl_Request_ *next; + + char *object_name; char *buf_out; int len_out; - char *buf_in; - int len_in; char *callback; - char *failback; - - int state; } IrTcl_Request; typedef struct { @@ -166,6 +170,31 @@ typedef struct { char *addinfo; } IrTcl_Diagnostic; +struct GRS_Record_entry { + int tagType; + int tagWhich; + union { + int num; + char *str; + } tagVal; + int dataWhich; + union { + struct IrTcl_GRS_Record_ *sub; + char *str; + struct { + int len; + char *buf; + } octets; + int num; + int bool; + } tagData; +}; + +typedef struct IrTcl_GRS_Record_ { + int noTags; + struct GRS_Record_entry *entries; +} IrTcl_GRS_Record; + typedef struct IrTcl_RecordList_ { int no; int which; @@ -173,6 +202,9 @@ typedef struct IrTcl_RecordList_ { struct { char *buf; size_t size; + union { + IrTcl_GRS_Record *grs1; + } u; enum oid_value type; } dbrec; struct { @@ -243,9 +275,18 @@ struct ir_named_entry { int ir_tcl_get_marc (Tcl_Interp *interp, const char *buf, int argc, char **argv); -int ir_tcl_send (Tcl_Interp *interp, IrTcl_Obj *p, Z_APDU *apdu, - const char *msg); +int ir_tcl_send_APDU (Tcl_Interp *interp, IrTcl_Obj *p, Z_APDU *apdu, + const char *msg, const char *object_name); +int ir_tcl_send_q (IrTcl_Obj *p, IrTcl_Request *rq, const char *msg); +void ir_tcl_del_q (IrTcl_Obj *p); +void *ir_tcl_malloc (size_t size); +int ir_tcl_strdup (Tcl_Interp *interp, char** p, const char *s); +int ir_tcl_strdel (Tcl_Interp *interp, char **p); + char *ir_tcl_fread_marc (FILE *inf, size_t *size); +void ir_tcl_read_grs (Z_GenericRecord *r, IrTcl_GRS_Record **grs_record); +int ir_tcl_get_grs (Tcl_Interp *interp, IrTcl_GRS_Record *grs_record, + int argc, char **argv); #define IR_TCL_FAIL_CONNECT 1 #define IR_TCL_FAIL_READ 2 @@ -253,7 +294,9 @@ char *ir_tcl_fread_marc (FILE *inf, size_t *size); #define IR_TCL_FAIL_IN_APDU 4 #define IR_TCL_FAIL_UNKNOWN_APDU 5 -#define IR_TCL_R_Queue 0 +#define IR_TCL_R_Idle 0 #define IR_TCL_R_Writing 1 #define IR_TCL_R_Waiting 2 +#define IR_TCL_R_Reading 3 +#define IR_TCL_R_Connecting 4 #endif