X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=ir-tclp.h;h=29598754521356737623ce4e6175c7aa04cadc8f;hb=0c66cddf6e923db676ed30691cd1d47b50db0d4a;hp=dd0132353653f41990fef7529a0a9ffb856f19ba;hpb=e19db4d04b946532912e9422f78da4258c843fbd;p=ir-tcl-moved-to-github.git diff --git a/ir-tclp.h b/ir-tclp.h index dd01323..2959875 100644 --- a/ir-tclp.h +++ b/ir-tclp.h @@ -5,7 +5,66 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: ir-tclp.h,v $ - * Revision 1.9 1995-06-14 15:08:01 adam + * Revision 1.25 1996-02-05 17:58:04 adam + * Ported ir-tcl to use the beta releases of tcl7.5/tk4.1. + * + * Revision 1.24 1996/01/29 11:35:27 adam + * Bug fix: cs_type member renamed to comstackType to avoid conflict with + * cs_type macro defined by YAZ. + * + * Revision 1.23 1996/01/19 16:22:40 adam + * New method: apduDump - returns information about last incoming APDU. + * + * Revision 1.22 1996/01/10 09:18:44 adam + * PDU specific callbacks implemented: initRespnse, searchResponse, + * presentResponse and scanResponse. + * Bug fix in the command line shell (tclmain.c) - discovered on OSF/1. + * + * Revision 1.21 1996/01/04 16:12:14 adam + * Setting PDUType renamed to eventType. + * + * Revision 1.20 1996/01/04 11:05:23 adam + * New setting: PDUType - returns type of last PDU returned from the target. + * Fixed a bug in configure/Makefile. + * + * Revision 1.19 1995/11/13 09:55:46 adam + * Multiple records at a position in a result-set with differnt + * element specs. + * + * Revision 1.18 1995/10/18 16:42:44 adam + * New settings: smallSetElementSetNames and mediumSetElementSetNames. + * + * Revision 1.17 1995/10/16 17:00:56 adam + * New setting: elementSetNames. + * Various client improvements. Medium presentation format looks better. + * + * 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 + * New setting: failInfo. + * Working on better cancel mechanism. + * + * Revision 1.10 1995/06/16 12:28:20 adam + * Implemented preferredRecordSyntax. + * Minor changes in diagnostic handling. + * Record list deleted when connection closes. + * + * Revision 1.9 1995/06/14 15:08:01 adam * Bug fix in cascade-target-list. Uses yaz-version.h. * * Revision 1.8 1995/06/14 13:37:18 adam @@ -69,11 +128,15 @@ typedef struct { char **databaseNames; int num_databaseNames; - char *queryType; + enum oid_value *preferredRecordSyntax; int replaceIndicator; char *referenceId; + char *elementSetNames; + char *smallSetElementSetNames; + char *mediumSetElementSetNames; + int smallSetUpperBound; int largeSetLowerBound; int mediumSetPresentNumber; @@ -82,10 +145,15 @@ typedef struct { typedef struct { int ref_count; - char *cs_type; - char *protocol_type; - int connectFlag; + char *comstackType; + int protocol_type; + int failInfo; COMSTACK cs_link; +#if IRTCL_GENERIC_FILES + Tcl_File csFile; +#endif + + int state; int preferredMessageSize; int maximumRecordSize; @@ -107,13 +175,10 @@ typedef struct { char *userInformationField; char *hostname; + char *eventType; - 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; @@ -121,30 +186,77 @@ typedef struct { Tcl_Interp *interp; char *callback; char *failback; + char *initResponse; + + int apduLen; + int apduOffset; #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_ { + struct IrTcl_Request_ *next; + + char *object_name; + + char *buf_out; + int len_out; + + char *callback; +} IrTcl_Request; + +typedef struct { + int condition; + 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; + char *elements; int which; union { struct { char *buf; size_t size; + union { + IrTcl_GRS_Record *grs1; + } u; enum oid_value type; } dbrec; struct { - int condition; - char *addinfo; - } diag; + int num; + IrTcl_Diagnostic *list; + } surrogateDiagnostics; } u; struct IrTcl_RecordList_ *next; } IrTcl_RecordList; @@ -159,10 +271,13 @@ typedef struct IrTcl_SetObj_ { int number; int numberOfRecordsReturned; char *setName; + char *recordElements; int recordFlag; int which; - int condition; - char *addinfo; + int nonSurrogateDiagnosticNum; + char *searchResponse; + char *presentResponse; + IrTcl_Diagnostic *nonSurrogateDiagnosticList; IrTcl_RecordList *record_list; IrTcl_SetCObj set_inher; } IrTcl_SetObj; @@ -175,16 +290,12 @@ typedef struct IrTcl_ScanEntry_ { int globalOccurrences; } term; struct { - int condition; - char *addinfo; + IrTcl_Diagnostic *list; + int num; } diag; } u; } IrTcl_ScanEntry; -typedef struct IrTcl_ScanDiag_ { - int dummy; -} IrTcl_ScanDiag; - typedef struct IrTcl_ScanObj_ { IrTcl_Obj *parent; int stepSize; @@ -201,8 +312,10 @@ typedef struct IrTcl_ScanObj_ { int num_entries; int num_diagRecs; + char *scanResponse; IrTcl_ScanEntry *entries; - IrTcl_ScanDiag *nonSurrogateDiagnostics; + IrTcl_Diagnostic *nonSurrogateDiagnosticList; + int nonSurrogateDiagnosticNum; } IrTcl_ScanObj; struct ir_named_entry { @@ -212,5 +325,28 @@ struct ir_named_entry { int ir_tcl_get_marc (Tcl_Interp *interp, const char *buf, int argc, char **argv); +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 +#define IR_TCL_FAIL_WRITE 3 +#define IR_TCL_FAIL_IN_APDU 4 +#define IR_TCL_FAIL_UNKNOWN_APDU 5 + +#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