X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=include%2Fproto.h;h=901ec32d9cd756e07271258c2d444280c2e32da5;hp=eae9d09d20b5a3b96bd6814278c8fd1193c66d54;hb=91481d554b60c13c6c163d20b7bd71c24af562aa;hpb=99268f722648e84bf5c54eb685a1434e100f38a1 diff --git a/include/proto.h b/include/proto.h index eae9d09..901ec32 100644 --- a/include/proto.h +++ b/include/proto.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, Index Data. + * Copyright (c) 1995-1999, Index Data. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation, in whole or in part, for any purpose, is hereby granted, @@ -24,7 +24,133 @@ * OF THIS SOFTWARE. * * $Log: proto.h,v $ - * Revision 1.7 1995-05-16 08:50:37 quinn + * Revision 1.47 1999-04-20 09:56:48 adam + * Added 'name' paramter to encoder/decoder routines (typedef Odr_fun). + * Modified all encoders/decoders to reflect this change. + * + * Revision 1.46 1998/10/20 13:55:44 quinn + * Fixed Scan bug in asn and client + * + * Revision 1.45 1998/08/19 16:10:07 adam + * Changed som member names of DeleteResultSetRequest/Response. + * + * Revision 1.44 1998/05/18 10:14:08 adam + * Minor change - removed 'dead' definitions. + * + * Revision 1.43 1998/03/31 11:07:45 adam + * Furhter work on UNIverse resource report. + * Added Extended Services handling in frontend server. + * + * Revision 1.42 1998/03/20 14:46:06 adam + * Added UNIverse Resource Reports. + * + * Revision 1.41 1998/02/10 15:31:52 adam + * Implemented date and time structure. Changed the Update Extended + * Service. + * + * Revision 1.40 1997/09/01 08:49:50 adam + * New windows NT/95 port using MSV5.0. To export DLL functions the + * YAZ_EXPORT modifier was added. Defined in yconfig.h. + * + * Revision 1.39 1997/05/14 06:53:44 adam + * C++ support. + * + * Revision 1.38 1997/04/30 08:52:09 quinn + * Null + * + * Revision 1.37 1996/10/09 15:54:58 quinn + * Added SearchInfoReport + * + * Revision 1.36 1996/10/07 15:29:20 quinn + * Added SOIF support + * + * Revision 1.35 1996/06/10 08:57:38 quinn + * Added OPAC, ResourceReport + * + * Revision 1.34 1996/06/10 08:55:36 quinn + * Added Summary. + * + * Revision 1.33 1996/02/23 10:00:51 quinn + * SCAN Work + * + * Revision 1.32 1996/02/20 12:52:39 quinn + * Various + * + * Revision 1.31 1996/01/22 09:46:45 quinn + * Added Sort PDU. Moved StringList to main protocol file. + * + * Revision 1.30 1996/01/10 15:21:32 quinn + * Added links to access control PDUs + * + * Revision 1.29 1996/01/02 11:46:49 quinn + * Changed 'operator' to 'roperator' to avoid C++ conflict. + * Moved to pl3 + * + * Revision 1.28 1996/01/02 08:57:32 quinn + * Changed enums in the ASN.1 .h files to #defines. Changed oident.class to oclass + * + * Revision 1.27 1995/10/12 10:34:46 quinn + * Added Espec-1. + * + * Revision 1.26 1995/09/29 17:12:08 quinn + * Smallish + * + * Revision 1.25 1995/09/27 15:02:49 quinn + * Modified function heads & prototypes. + * + * Revision 1.24 1995/08/29 11:17:43 quinn + * *** empty log message *** + * + * Revision 1.23 1995/08/21 09:10:36 quinn + * Smallish fixes to suppport new formats. + * + * Revision 1.22 1995/08/17 12:45:14 quinn + * Fixed minor problems with GRS-1. Added support in c&s. + * + * Revision 1.21 1995/08/15 12:00:11 quinn + * Updated External + * + * Revision 1.20 1995/08/10 08:54:35 quinn + * Added Explain. + * + * Revision 1.19 1995/06/19 12:38:28 quinn + * Reorganized include-files. Added small features. + * + * Revision 1.18 1995/06/16 13:16:05 quinn + * Fixed Defaultdiagformat. + * + * Revision 1.17 1995/06/15 15:42:05 quinn + * Fixed some v3 bugs + * + * Revision 1.16 1995/06/15 07:45:06 quinn + * Moving to v3. + * + * Revision 1.15 1995/06/14 15:26:43 quinn + * *** empty log message *** + * + * Revision 1.14 1995/06/07 14:42:34 quinn + * Fixed CLOSE + * + * Revision 1.13 1995/06/07 14:36:47 quinn + * Added CLOSE + * + * Revision 1.12 1995/06/05 10:53:13 quinn + * Smallish. + * + * Revision 1.11 1995/06/02 09:49:47 quinn + * Add access control + * + * Revision 1.10 1995/05/29 08:11:34 quinn + * Moved oid from odr/asn to util. + * + * Revision 1.9 1995/05/22 11:31:25 quinn + * Added PDUs + * + * Revision 1.8 1995/05/17 08:41:35 quinn + * Added delete to proto & other little things. + * Relaying auth info to backend. + * + * Revision 1.7 1995/05/16 08:50:37 quinn * License, documentation, and memory fixes * * Revision 1.6 1995/05/15 11:55:55 quinn @@ -80,16 +206,88 @@ #ifndef PROTO_H #define PROTO_H +#include #include +#include #include +#include + +#ifdef __cplusplus +extern "C" { +#endif /* ----------------- GLOBAL AUXILIARY DEFS ----------------*/ +struct Z_External; +typedef struct Z_External Z_External; + typedef Odr_oct Z_ReferenceId; typedef char Z_DatabaseName; typedef char Z_ResultSetId; typedef Odr_oct Z_ResultsetId; -typedef Odr_external Z_UserInformationField; + +typedef struct Z_InfoCategory +{ + Odr_oid *categoryTypeId; /* OPTIONAL */ + int *categoryValue; +} Z_InfoCategory; + +typedef struct Z_OtherInformationUnit +{ + Z_InfoCategory *category; /* OPTIONAL */ + int which; +#define Z_OtherInfo_characterInfo 0 +#define Z_OtherInfo_binaryInfo 1 +#define Z_OtherInfo_externallyDefinedInfo 2 +#define Z_OtherInfo_oid 3 + union + { + char *characterInfo; + Odr_oct *binaryInfo; + Z_External *externallyDefinedInfo; + Odr_oid *oid; + } information; +} Z_OtherInformationUnit; + +typedef struct Z_OtherInformation +{ + int num_elements; + Z_OtherInformationUnit **list; +} Z_OtherInformation; + +typedef struct Z_StringOrNumeric +{ + int which; +#define Z_StringOrNumeric_string 0 +#define Z_StringOrNumeric_numeric 1 + union + { + char *string; + int *numeric; + } u; +} Z_StringOrNumeric; + +typedef struct Z_Unit +{ + char *unitSystem; /* OPTIONAL */ + Z_StringOrNumeric *unitType; /* OPTIONAL */ + Z_StringOrNumeric *unit; /* OPTIONAL */ + int *scaleFactor; /* OPTIONAL */ +} Z_Unit; + +typedef struct Z_IntUnit +{ + int *value; + Z_Unit *unitUsed; +} Z_IntUnit; + +typedef Odr_oct Z_SUTRS; + +typedef struct Z_StringList +{ + int num_strings; + char **strings; +} Z_StringList; /* ----------------- INIT SERVICE ----------------*/ @@ -102,68 +300,68 @@ typedef struct typedef struct Z_IdAuthentication { - enum - { - Z_IdAuthentication_open, - Z_IdAuthentication_idPass, - Z_IdAuthentication_anonymous, - Z_IdAuthentication_other - } which; + int which; +#define Z_IdAuthentication_open 0 +#define Z_IdAuthentication_idPass 1 +#define Z_IdAuthentication_anonymous 2 +#define Z_IdAuthentication_other 3 union { char *open; Z_IdPass *idPass; - void *anonymous; /* NULL */ - Odr_external *other; + Odr_null *anonymous; + Z_External *other; } u; } Z_IdAuthentication; -#define Z_ProtocolVersion_1 0 -#define Z_ProtocolVersion_2 1 -#define Z_ProtocolVersion_3 2 - -#define Z_Options_search 0 -#define Z_Options_present 1 -#define Z_Options_delSet 2 -#define Z_Options_resourceReport 3 -#define Z_Options_triggerResourceCtrl 4 -#define Z_Options_resourceCtrl 5 -#define Z_Options_accessCtrl 6 -#define Z_Options_scan 7 -#define Z_Options_sort 8 -#define Z_Options_reserved 9 -#define Z_Options_extendedServices 10 -#define Z_Options_level_1Segmentation 11 -#define Z_Options_level_2Segmentation 12 -#define Z_Options_concurrentOperations 13 -#define Z_Options_namedResultSets 14 +#define Z_ProtocolVersion_1 0 +#define Z_ProtocolVersion_2 1 +#define Z_ProtocolVersion_3 2 + +#define Z_Options_search 0 +#define Z_Options_present 1 +#define Z_Options_delSet 2 +#define Z_Options_resourceReport 3 +#define Z_Options_triggerResourceCtrl 4 +#define Z_Options_resourceCtrl 5 +#define Z_Options_accessCtrl 6 +#define Z_Options_scan 7 +#define Z_Options_sort 8 +#define Z_Options_reserved 9 +#define Z_Options_extendedServices 10 +#define Z_Options_level_1Segmentation 11 +#define Z_Options_level_2Segmentation 12 +#define Z_Options_concurrentOperations 13 +#define Z_Options_namedResultSets 14 typedef struct Z_InitRequest { Z_ReferenceId *referenceId; /* OPTIONAL */ - Odr_bitmask *options; Odr_bitmask *protocolVersion; + Odr_bitmask *options; int *preferredMessageSize; int *maximumRecordSize; Z_IdAuthentication* idAuthentication; /* OPTIONAL */ char *implementationId; /* OPTIONAL */ char *implementationName; /* OPTIONAL */ char *implementationVersion; /* OPTIONAL */ - Z_UserInformationField *userInformationField; /* OPTIONAL */ + Z_External *userInformationField; /* OPTIONAL */ + Z_OtherInformation *otherInfo; /* OPTIONAL */ } Z_InitRequest; typedef struct Z_InitResponse { Z_ReferenceId *referenceId; /* OPTIONAL */ - Odr_bitmask *options; Odr_bitmask *protocolVersion; + Odr_bitmask *options; int *preferredMessageSize; int *maximumRecordSize; bool_t *result; char *implementationId; /* OPTIONAL */ char *implementationName; /* OPTIONAL */ char *implementationVersion; /* OPTIONAL */ - Z_UserInformationField *userInformationField; /* OPTIONAL */ + Z_External *userInformationField; /* OPTIONAL */ + Z_OtherInformation *otherInfo; /* OPTIONAL */ } Z_InitResponse; typedef struct Z_NSRAuthentication @@ -173,48 +371,13 @@ typedef struct Z_NSRAuthentication char *account; } Z_NSRAuthentication; -int z_NSRAuthentication(ODR o, Z_NSRAuthentication **p, int opt); - -int z_StrAuthentication(ODR o, char **p, int opt); - - -/* ------------------ RESOURCE CONTROL ----------------*/ - -typedef struct Z_TriggerResourceControlRequest -{ - Z_ReferenceId *referenceId; /* OPTIONAL */ - int *requestedAction; -#define Z_TriggerResourceCtrl_resourceReport 1 -#define Z_TriggerResourceCtrl_resourceControl 2 -#define Z_TriggerResourceCtrl_cancel 3 - Odr_oid *prefResourceReportFormat; /* OPTIONAL */ - bool_t *resultSetWanted; /* OPTIONAL */ -} Z_TriggerResourceControlRequest; - -typedef struct Z_ResourceControlRequest -{ - Z_ReferenceId *referenceId; /* OPTIONAL */ - bool_t *suspendedFlag; /* OPTIONAL */ - Odr_external *resourceReport; /* OPTIONAL */ - int *partialResultsAvailable; /* OPTIONAL */ -#define Z_ResourceControlRequest_subset 1 -#define Z_ResourceControlRequest_interim 2 -#define Z_ResourceControlRequest_none 3 - bool_t *responseRequired; - bool_t *triggeredRequestFlag; /* OPTIONAL */ -} Z_ResourceControlRequest; +int z_NSRAuthentication(ODR o, Z_NSRAuthentication **p, int opt, + const char *name); -typedef struct Z_ResourceControlResponse -{ - Z_ReferenceId *referenceId; /* OPTIONAL */ - bool_t *continueFlag; - bool_t *resultSetWanted; /* OPTIONAL */ -} Z_ResourceControlResponse; +int z_StrAuthentication(ODR o, char **p, int opt, const char *name); /* ------------------ SEARCH SERVICE ----------------*/ -typedef Odr_oid Z_PreferredRecordSyntax; - typedef struct Z_DatabaseSpecificUnit { char *databaseName; @@ -241,28 +404,39 @@ typedef struct Z_ElementSetNames /* ---------------------- RPN QUERY --------------------------- */ +typedef struct Z_ComplexAttribute +{ + int num_list; + Z_StringOrNumeric **list; + int num_semanticAction; + int **semanticAction; /* OPTIONAL */ +} Z_ComplexAttribute; + typedef struct Z_AttributeElement { + Odr_oid *attributeSet; /* OPTIONAL - v3 only */ int *attributeType; - int *attributeValue; + int which; +#define Z_AttributeValue_numeric 0 +#define Z_AttributeValue_complex 1 + union + { + int *numeric; + Z_ComplexAttribute *complex; + } value; } Z_AttributeElement; -#define Z_V3 -#ifdef Z_V3 - typedef struct Z_Term { - enum - { - Z_Term_general, - Z_Term_numeric, - Z_Term_characterString, - Z_Term_oid, - Z_Term_dateTime, - Z_Term_external, - Z_Term_integerAndUnit, - Z_Term_null - } which; + int which; +#define Z_Term_general 0 +#define Z_Term_numeric 1 +#define Z_Term_characterString 2 +#define Z_Term_oid 3 +#define Z_Term_dateTime 4 +#define Z_Term_external 5 +#define Z_Term_integerAndUnit 6 +#define Z_Term_null 7 union { Odr_oct *general; /* this is required for v2 */ @@ -270,58 +444,68 @@ typedef struct Z_Term char *characterString; Odr_oid *oid; char *dateTime; - Odr_external *external; + Z_External *external; /* Z_IntUnit *integerAndUnit; */ - void *null; + Odr_null *null; } u; } Z_Term; -#endif - typedef struct Z_AttributesPlusTerm { int num_attributes; Z_AttributeElement **attributeList; -#ifdef Z_V3 Z_Term *term; -#else - Odr_oct *term; -#endif } Z_AttributesPlusTerm; +typedef struct Z_ResultSetPlusAttributes +{ + char *resultSet; + int num_attributes; + Z_AttributeElement **attributeList; +} Z_ResultSetPlusAttributes; + typedef struct Z_ProximityOperator { bool_t *exclusion; /* OPTIONAL */ int *distance; bool_t *ordered; int *relationType; - enum - { - Z_ProximityOperator_known, - Z_ProximityOperator_private - } which; - union - { - int *known; - int *private; - } u; +#define Z_Prox_lessThan 1 +#define Z_Prox_lessThanOrEqual 2 +#define Z_Prox_equal 3 +#define Z_Prox_greaterThanOrEqual 4 +#define Z_Prox_greaterThan 5 +#define Z_Prox_notEqual 6 + int which; +#define Z_ProxCode_known 0 +#define Z_ProxCode_private 1 + int *proximityUnitCode; +#define Z_ProxUnit_character 1 +#define Z_ProxUnit_word 2 +#define Z_ProxUnit_sentence 3 +#define Z_ProxUnit_paragraph 4 +#define Z_ProxUnit_section 5 +#define Z_ProxUnit_chapter 6 +#define Z_ProxUnit_document 7 +#define Z_ProxUnit_element 8 +#define Z_ProxUnit_subelement 9 +#define Z_ProxUnit_elementType 10 +#define Z_ProxUnit_byte 11 /* v3 only */ } Z_ProximityOperator; typedef struct Z_Operator { - enum - { - Z_Operator_and, - Z_Operator_or, - Z_Operator_and_not, - Z_Operator_proximity - } which; + int which; +#define Z_Operator_and 0 +#define Z_Operator_or 1 +#define Z_Operator_and_not 2 +#define Z_Operator_prox 3 union { - void *and; /* these guys are nulls. */ - void *or; - void *and_not; - Z_ProximityOperator *proximity; + Odr_null *and; /* these guys are nulls. */ + Odr_null *or; + Odr_null *and_not; + Z_ProximityOperator *prox; } u; } Z_Operator; @@ -330,10 +514,12 @@ typedef struct Z_Operand int which; #define Z_Operand_APT 0 #define Z_Operand_resultSetId 1 +#define Z_Operand_resultAttr /* v3 only */ 2 union { Z_AttributesPlusTerm *attributesPlusTerm; Z_ResultSetId *resultSetId; + Z_ResultSetPlusAttributes *resultAttr; } u; } Z_Operand; @@ -341,7 +527,7 @@ typedef struct Z_Complex { struct Z_RPNStructure *s1; struct Z_RPNStructure *s2; - Z_Operator *operator; + Z_Operator *roperator; } Z_Complex; typedef struct Z_RPNStructure @@ -369,10 +555,12 @@ typedef struct Z_Query int which; #define Z_Query_type_1 1 #define Z_Query_type_2 2 +#define Z_Query_type_101 3 union { Z_RPNQuery *type_1; Odr_oct *type_2; + Z_RPNQuery *type_101; } u; } Z_Query; @@ -388,21 +576,46 @@ typedef struct Z_SearchRequest char **databaseNames; Z_ElementSetNames *smallSetElementSetNames; /* OPTIONAL */ Z_ElementSetNames *mediumSetElementSetNames; /* OPTIONAL */ - Z_PreferredRecordSyntax *preferredRecordSyntax; /* OPTIONAL */ + Odr_oid *preferredRecordSyntax; /* OPTIONAL */ Z_Query *query; + Z_OtherInformation *additionalSearchInfo; /* OPTIONAL */ + Z_OtherInformation *otherInfo; /* OPTIONAL */ } Z_SearchRequest; /* ------------------------ RECORD -------------------------- */ -typedef Odr_external Z_DatabaseRecord; +typedef Z_External Z_DatabaseRecord; -typedef struct Z_DiagRec +typedef struct Z_DefaultDiagFormat { - Odr_oid *diagnosticSetId; + Odr_oid *diagnosticSetId; /* This is opt'l to interwork with bad targets */ int *condition; + /* until the whole character set issue becomes more definite, + * you can probably ignore this on input. */ + int which; +#define Z_DiagForm_v2AddInfo 0 +#define Z_DiagForm_v3AddInfo 1 char *addinfo; +} Z_DefaultDiagFormat; + +typedef struct Z_DiagRec +{ + int which; +#define Z_DiagRec_defaultFormat 0 +#define Z_DiagRec_externallyDefined 1 + union + { + Z_DefaultDiagFormat *defaultFormat; + Z_External *externallyDefined; + } u; } Z_DiagRec; +typedef struct Z_DiagRecs +{ + int num_diagRecs; + Z_DiagRec **diagRecs; +} Z_DiagRecs; + typedef struct Z_NamePlusRecord { char *databaseName; /* OPTIONAL */ @@ -427,13 +640,188 @@ typedef struct Z_Records int which; #define Z_Records_DBOSD 0 #define Z_Records_NSD 1 +#define Z_Records_multipleNSD 2 union { Z_NamePlusRecordList *databaseOrSurDiagnostics; Z_DiagRec *nonSurrogateDiagnostic; + Z_DiagRecs *multipleNonSurDiagnostics; } u; } Z_Records; +/* ------------------------ SEARCHRESPONSE ------------------ */ + +typedef struct Z_SearchResponse +{ + Z_ReferenceId *referenceId; /* OPTIONAL */ + int *resultCount; + int *numberOfRecordsReturned; + int *nextResultSetPosition; + bool_t *searchStatus; + int *resultSetStatus; /* OPTIONAL */ +#define Z_RES_SUBSET 1 +#define Z_RES_INTERIM 2 +#define Z_RES_NONE 3 + int *presentStatus; /* OPTIONAL */ +#define Z_PRES_SUCCESS 0 +#define Z_PRES_PARTIAL_1 1 +#define Z_PRES_PARTIAL_2 2 +#define Z_PRES_PARTIAL_3 3 +#define Z_PRES_PARTIAL_4 4 +#define Z_PRES_FAILURE 5 + Z_Records *records; /* OPTIONAL */ + Z_OtherInformation *additionalSearchInfo; + Z_OtherInformation *otherInfo; +} Z_SearchResponse; + +/* ------------------------- PRESENT SERVICE -----------------*/ + +typedef struct Z_ElementSpec +{ + int which; +#define Z_ElementSpec_elementSetName 0 +#define Z_ElementSpec_externalSpec 1 + union + { + char *elementSetName; + Z_External *externalSpec; + } u; +} Z_ElementSpec; + +typedef struct Z_Specification +{ + Odr_oid *schema; /* OPTIONAL */ + Z_ElementSpec *elementSpec; /* OPTIONAL */ +} Z_Specification; + +typedef struct Z_DbSpecific +{ + char *databaseName; + Z_Specification *spec; +} Z_DbSpecific; + +typedef struct Z_CompSpec +{ + bool_t *selectAlternativeSyntax; + Z_Specification *generic; /* OPTIONAL */ + int num_dbSpecific; + Z_DbSpecific **dbSpecific; /* OPTIONAL */ + int num_recordSyntax; + Odr_oid **recordSyntax; /* OPTIONAL */ +} Z_CompSpec; + +typedef struct Z_RecordComposition +{ + int which; +#define Z_RecordComp_simple 0 +#define Z_RecordComp_complex 1 + union + { + Z_ElementSetNames *simple; + Z_CompSpec *complex; + } u; +} Z_RecordComposition; + +typedef struct Z_Range +{ + int *startingPosition; + int *numberOfRecords; +} Z_Range; + +typedef struct Z_PresentRequest +{ + Z_ReferenceId *referenceId; /* OPTIONAL */ + Z_ResultSetId *resultSetId; + int *resultSetStartPoint; + int *numberOfRecordsRequested; + int num_ranges; + Z_Range **additionalRanges; /* OPTIONAL */ + Z_RecordComposition *recordComposition; /* OPTIONAL */ + Odr_oid *preferredRecordSyntax; /* OPTIONAL */ + int *maxSegmentCount; /* OPTIONAL */ + int *maxRecordSize; /* OPTIONAL */ + int *maxSegmentSize; /* OPTIONAL */ + Z_OtherInformation *otherInfo; /* OPTIONAL */ +} Z_PresentRequest; + +typedef struct Z_PresentResponse +{ + Z_ReferenceId *referenceId; /* OPTIONAL */ + int *numberOfRecordsReturned; + int *nextResultSetPosition; + int *presentStatus; + Z_Records *records; + Z_OtherInformation *otherInfo; /* OPTIONAL */ +} Z_PresentResponse; + +/* ------------------ RESOURCE CONTROL ----------------*/ + +typedef struct Z_TriggerResourceControlRequest +{ + Z_ReferenceId *referenceId; /* OPTIONAL */ + int *requestedAction; +#define Z_TriggerResourceCtrl_resourceReport 1 +#define Z_TriggerResourceCtrl_resourceControl 2 +#define Z_TriggerResourceCtrl_cancel 3 + Odr_oid *prefResourceReportFormat; /* OPTIONAL */ + bool_t *resultSetWanted; /* OPTIONAL */ + Z_OtherInformation *otherInfo; +} Z_TriggerResourceControlRequest; + +typedef struct Z_ResourceControlRequest +{ + Z_ReferenceId *referenceId; /* OPTIONAL */ + bool_t *suspendedFlag; /* OPTIONAL */ + Z_External *resourceReport; /* OPTIONAL */ + int *partialResultsAvailable; /* OPTIONAL */ +#define Z_ResourceControlRequest_subset 1 +#define Z_ResourceControlRequest_interim 2 +#define Z_ResourceControlRequest_none 3 + bool_t *responseRequired; + bool_t *triggeredRequestFlag; /* OPTIONAL */ + Z_OtherInformation *otherInfo; +} Z_ResourceControlRequest; + +typedef struct Z_ResourceControlResponse +{ + Z_ReferenceId *referenceId; /* OPTIONAL */ + bool_t *continueFlag; + bool_t *resultSetWanted; /* OPTIONAL */ + Z_OtherInformation *otherInfo; +} Z_ResourceControlResponse; + + +/* ------------------ ACCESS CTRL SERVICE ----------------*/ + +typedef struct Z_AccessControlRequest +{ + Z_ReferenceId *referenceId; /* OPTIONAL */ + int which; +#define Z_AccessRequest_simpleForm 0 +#define Z_AccessRequest_externallyDefined 1 + union + { + Odr_oct *simpleForm; + Z_External *externallyDefined; + } u; + Z_OtherInformation *otherInfo; /* OPTIONAL */ +} Z_AccessControlRequest; + +typedef struct Z_AccessControlResponse +{ + Z_ReferenceId *referenceId; /* OPTIONAL */ + int which; +#define Z_AccessResponse_simpleForm 0 +#define Z_AccessResponse_externallyDefined 1 + union + { + Odr_oct *simpleForm; + Z_External *externallyDefined; + } u; + Z_DiagRec *diagnostic; /* OPTIONAL */ + Z_OtherInformation *otherInfo; /* OPTIONAL */ +} Z_AccessControlResponse; + /* ------------------------ SCAN SERVICE -------------------- */ typedef struct Z_AttributeList @@ -448,41 +836,61 @@ typedef struct Z_AlternativeTerm Z_AttributesPlusTerm **terms; } Z_AlternativeTerm; -typedef struct Z_OccurrenceByAttributes +typedef struct Z_ByDatabase { - Z_AttributeList *attributes; -#if 0 - enum - { - Z_OByAtt_global, - Z_ObyAtt_byDatabase - } which; + char *db; + int *num; /* OPTIONAL */ + Z_OtherInformation *otherDbInfo; /* OPTIONAL */ +} Z_ByDatabase; + +typedef struct Z_ByDatabaseList +{ + int num_elements; + Z_ByDatabase **elements; +} Z_ByDatabaseList; + +typedef struct Z_ScanOccurrences +{ + int which; +#define Z_ScanOccurrences_global 0 +#define Z_ScanOccurrences_byDatabase 1 union { -#endif - int *global; -#if 0 - /* Z_ByDatabase *byDatabase; */ + int *global; + Z_ByDatabaseList *byDatabase; } u; -#endif + +} Z_ScanOccurrences; + +typedef struct Z_OccurrenceByAttributesElem +{ + Z_AttributeList *attributes; + Z_ScanOccurrences *occurrences; /* OPTIONAL */ + Z_OtherInformation *otherOccurInfo; /* OPTIONAL */ +} Z_OccurrenceByAttributesElem; + +typedef struct Z_OccurrenceByAttributes +{ + int num_elements; + Z_OccurrenceByAttributesElem **elements; } Z_OccurrenceByAttributes; typedef struct Z_TermInfo { Z_Term *term; + char *displayTerm; /* OPTIONAL */ Z_AttributeList *suggestedAttributes; /* OPTIONAL */ Z_AlternativeTerm *alternativeTerm; /* OPTIONAL */ int *globalOccurrences; /* OPTIONAL */ Z_OccurrenceByAttributes *byAttributes; /* OPTIONAL */ + Z_OtherInformation *otherTermInfo; /* OPTIONAL */ } Z_TermInfo; typedef struct Z_Entry { - enum - { - Z_Entry_termInfo, - Z_Entry_surrogateDiagnostic - } which; + int which; +#define Z_Entry_termInfo 0 +#define Z_Entry_surrogateDiagnostic 1 union { Z_TermInfo *termInfo; @@ -490,25 +898,19 @@ typedef struct Z_Entry } u; } Z_Entry; +#ifdef BUGGY_LISTENTRIES + typedef struct Z_Entries { int num_entries; Z_Entry **entries; } Z_Entries; -typedef struct Z_DiagRecs -{ - int num_diagRecs; - Z_DiagRec **diagRecs; -} Z_DiagRecs; - typedef struct Z_ListEntries { - enum - { - Z_ListEntries_entries, - Z_ListEntries_nonSurrogateDiagnostics - } which; + int which; +#define Z_ListEntries_entries 0 +#define Z_ListEntries_nonSurrogateDiagnostics 1 union { Z_Entries *entries; @@ -516,17 +918,26 @@ typedef struct Z_ListEntries } u; } Z_ListEntries; +#endif + +typedef struct Z_ListEntries { + int num_entries; + Z_Entry **entries; /* OPT */ + int num_nonsurrogateDiagnostics; + Z_DiagRec **nonsurrogateDiagnostics; /* OPT */ +} Z_ListEntries; + typedef struct Z_ScanRequest { Z_ReferenceId *referenceId; /* OPTIONAL */ int num_databaseNames; char **databaseNames; Odr_oid *attributeSet; /* OPTIONAL */ - Odr_any *eatme1; Z_AttributesPlusTerm *termListAndStartPoint; int *stepSize; /* OPTIONAL */ int *numberOfTermsRequested; int *preferredPositionInResponse; /* OPTIONAL */ + Z_OtherInformation *otherInfo; } Z_ScanRequest; typedef struct Z_ScanResponse @@ -545,54 +956,24 @@ typedef struct Z_ScanResponse int *positionOfTerm; /* OPTIONAL */ Z_ListEntries *entries; /* OPTIONAL */ Odr_oid *attributeSet; /* OPTIONAL */ + Z_OtherInformation *otherInfo; } Z_ScanResponse; -/* ------------------------ SEARCHRESPONSE ------------------ */ - -typedef struct Z_SearchResponse -{ - Z_ReferenceId *referenceId; /* OPTIONAL */ - int *resultCount; - int *numberOfRecordsReturned; - int *nextResultSetPosition; - bool_t *searchStatus; - int *resultSetStatus; /* OPTIONAL */ -#define Z_RES_SUBSET 1 -#define Z_RES_INTERIM 2 -#define Z_RES_NONE 3 - int *presentStatus; /* OPTIONAL */ -#define Z_PRES_SUCCESS 0 -#define Z_PRES_PARTIAL_1 1 -#define Z_PRES_PARTIAL_2 2 -#define Z_PRES_PARTIAL_3 3 -#define Z_PRES_PARTIAL_4 4 -#define Z_PRES_FAILURE 5 - Z_Records *records; /* OPTIONAL */ -} Z_SearchResponse; - -/* ------------------------- PRESENT SERVICE -----------------*/ - -typedef struct Z_PresentRequest -{ - Z_ReferenceId *referenceId; /* OPTIONAL */ - Z_ResultSetId *resultSetId; - int *resultSetStartPoint; - int *numberOfRecordsRequested; - Z_ElementSetNames *elementSetNames; /* OPTIONAL */ - Z_PreferredRecordSyntax *preferredRecordSyntax; /* OPTIONAL */ -} Z_PresentRequest; - -typedef struct Z_PresentResponse -{ - Z_ReferenceId *referenceId; /* OPTIONAL */ - int *numberOfRecordsReturned; - int *nextResultSetPosition; - int *presentStatus; - Z_Records *records; -} Z_PresentResponse; /* ------------------------ DELETE -------------------------- */ +#define Z_DeleteStatus_success 0 +#define Z_DeleteStatus_resultSetDidNotExist 1 +#define Z_DeleteStatus_previouslyDeletedByTarget 2 +#define Z_DeleteStatus_systemProblemAtTarget 3 +#define Z_DeleteStatus_accessNotAllowed 4 +#define Z_DeleteStatus_resourceControlAtOrigin 5 +#define Z_DeleteStatus_resourceControlAtTarget 6 +#define Z_DeleteStatus_bulkDeleteNotSupported 7 +#define Z_DeleteStatus_notAllRsltSetsDeletedOnBulkDlte 8 +#define Z_DeleteStatus_notAllRequestedResultSetsDeleted 9 +#define Z_DeleteStatus_resultSetInUse 10 + typedef struct Z_ListStatus { Z_ResultSetId *id; @@ -605,55 +986,269 @@ typedef struct Z_DeleteResultSetRequest int *deleteFunction; #define Z_DeleteRequest_list 0 #define Z_DeleteRequest_all 1 - int num_ids; - Z_ResultSetId *resultSetList; /* OPTIONAL */ + int num_resultSetList; + Z_ResultSetId **resultSetList; /* OPTIONAL */ + Z_OtherInformation *otherInfo; } Z_DeleteResultSetRequest; -typedef enum Z_DeleteSetStatus -{ - Z_Delete_success = 0, - Z_Delete_resultSetDidNotExist, - Z_Delete_previouslyDeletedByTarget, - Z_Delete_systemProblemAtTarget, - Z_Delete_accessNotAllowed, - Z_Delete_resourceControlAtOrigin, - Z_Delete_resourceControlAtTarget, - Z_Delete_bulkDeleteNotSupported, - Z_Delete_notAllRsltSetsDeletedOnBulkDlte, - Z_Delete_notAllRequestedResultSetsDeleted, - Z_Delete_resultSetInUse -} Z_DeleteSetStatus; +typedef struct Z_ListStatuses { + int num; + Z_ListStatus **elements; +} Z_ListStatuses; typedef struct Z_DeleteResultSetResponse { Z_ReferenceId *referenceId; /* OPTIONAL */ int *deleteOperationStatus; - int num_statuses; - Z_ListStatus *deleteListStatuses; /* OPTIONAL */ + Z_ListStatuses *deleteListStatuses;/* OPTIONAL */ int *numberNotDeleted; /* OPTIONAL */ - int num_bulkstatuses; - Z_ListStatus *bulkStatuses; /* OPTIONAL */ + Z_ListStatuses *bulkStatuses; /* OPTIONAL */ char *deleteMessage; /* OPTIONAL */ + Z_OtherInformation *otherInfo; } Z_DeleteResultSetResponse; +/* ------------------------ CLOSE SERVICE ------------------- */ + +typedef struct Z_Close +{ + Z_ReferenceId *referenceId; /* OPTIONAL */ + int *closeReason; +#define Z_Close_finished 0 +#define Z_Close_shutdown 1 +#define Z_Close_systemProblem 2 +#define Z_Close_costLimit 3 +#define Z_Close_resources 4 +#define Z_Close_securityViolation 5 +#define Z_Close_protocolError 6 +#define Z_Close_lackOfActivity 7 +#define Z_Close_peerAbort 8 +#define Z_Close_unspecified 9 + char *diagnosticInformation; /* OPTIONAL */ + Odr_oid *resourceReportFormat; /* OPTIONAL */ + Z_External *resourceReport; /* OPTIONAL */ + Z_OtherInformation *otherInfo; /* OPTIONAL */ +} Z_Close; + +/* ------------------------ SEGMENTATION -------------------- */ + +typedef struct Z_Segment +{ + Z_ReferenceId *referenceId; /* OPTIONAL */ + int *numberOfRecordsReturned; + int num_segmentRecords; + Z_NamePlusRecord **segmentRecords; + Z_OtherInformation *otherInfo; /* OPTIONAL */ +} Z_Segment; + +/* ----------------------- Extended Services ---------------- */ + +typedef struct Z_Permissions +{ + char *userId; + int num_allowableFunctions; + int **allowableFunctions; +#define Z_Permissions_delete 1 +#define Z_Permissions_modifyContents 2 +#define Z_Permissions_modifyPermissions 3 +#define Z_Permissions_present 4 +#define Z_Permissions_invoke 5 +} Z_Permissions; + +typedef struct Z_ExtendedServicesRequest +{ + Z_ReferenceId *referenceId; /* OPTIONAL */ + int *function; +#define Z_ExtendedServicesRequest_create 1 +#define Z_ExtendedServicesRequest_delete 2 +#define Z_ExtendedServicesRequest_modify 3 + Odr_oid *packageType; + char *packageName; /* OPTIONAL */ + char *userId; /* OPTIONAL */ + Z_IntUnit *retentionTime; /* OPTIONAL */ + Z_Permissions *permissions; /* OPTIONAL */ + char *description; /* OPTIONAL */ + Z_External *taskSpecificParameters; /* OPTIONAL */ + int *waitAction; +#define Z_ExtendedServicesRequest_wait 1 +#define Z_ExtendedServicesRequest_waitIfPossible 2 +#define Z_ExtendedServicesRequest_dontWait 3 +#define Z_ExtendedServicesRequest_dontReturnPackage 4 + char *elements; /* OPTIONAL */ + Z_OtherInformation *otherInfo; /* OPTIONAL */ +} Z_ExtendedServicesRequest; + +typedef struct Z_ExtendedServicesResponse +{ + Z_ReferenceId *referenceId; /* OPTIONAL */ + int *operationStatus; +#define Z_ExtendedServicesResponse_done 1 +#define Z_ExtendedServicesResponse_accepted 2 +#define Z_ExtendedServicesResponse_failure 3 + int num_diagnostics; + Z_DiagRec **diagnostics; /* OPTIONAL */ + Z_External *taskPackage; /* OPTIONAL */ + Z_OtherInformation *otherInfo; /* OPTIONAL */ +} Z_ExtendedServicesResponse; + +/* ------------------------ Sort --------------------------- */ + +typedef struct Z_SortAttributes +{ + Odr_oid *id; + Z_AttributeList *list; +} Z_SortAttributes; + +typedef struct Z_SortKey +{ + int which; +#define Z_SortKey_sortField 0 +#define Z_SortKey_elementSpec 1 +#define Z_SortKey_sortAttributes 2 + union + { + char *sortField; + Z_Specification *elementSpec; + Z_SortAttributes *sortAttributes; + } u; +} Z_SortKey; + +typedef struct Z_SortDbSpecific +{ + char *databaseName; + Z_SortKey *dbSort; +} Z_SortDbSpecific; + +typedef struct Z_SortDbSpecificList +{ + int num_dbSpecific; + Z_SortDbSpecific **dbSpecific; +} Z_SortDbSpecificList; + +typedef struct Z_SortElement +{ + int which; +#define Z_SortElement_generic 0 +#define Z_SortElement_databaseSpecific 1 + union + { + Z_SortKey *generic; + Z_SortDbSpecificList *databaseSpecific; + } u; +} Z_SortElement; + +typedef struct Z_SortMissingValueAction +{ + int which; +#define Z_SortMissingValAct_abort 0 +#define Z_SortMissingValAct_null 1 +#define Z_SortMissingValAct_valData 2 + union + { + Odr_null *abort; + Odr_null *null; + Odr_oct *valData; + } u; +} Z_SortMissingValueAction; + +typedef struct Z_SortKeySpec +{ + Z_SortElement *sortElement; + int *sortRelation; +#define Z_SortRelation_ascending 0 +#define Z_SortRelation_descending 1 +#define Z_SortRelation_ascendingByFreq 3 +#define Z_SortRelation_descendingByFreq 4 + int *caseSensitivity; +#define Z_SortCase_caseSensitive 0 +#define Z_SortCase_caseInsensitive 1 + Z_SortMissingValueAction *missingValueAction; /* OPTIONAL */ +} Z_SortKeySpec; + +typedef struct Z_SortResponse +{ + Z_ReferenceId *referenceId; /* OPTIONAL */ + int *sortStatus; +#define Z_SortStatus_success 0 +#define Z_SortStatus_partial_1 1 +#define Z_SortStatus_failure 2 + int *resultSetStatus; /* OPTIONAL */ +#define Z_SortResultSetStatus_empty 1 +#define Z_SortResultSetStatus_interim 2 +#define Z_SortResultSetStatus_unchanged 3 +#define Z_SortResultSetStatus_none 4 + Z_DiagRecs *diagnostics; /* OPTIONAL */ + Z_OtherInformation *otherInfo; /* OPTIONAL */ +} Z_SortResponse; + +typedef struct Z_SortKeySpecList +{ + int num_specs; + Z_SortKeySpec **specs; +} Z_SortKeySpecList; + +typedef struct Z_SortRequest +{ + Z_ReferenceId *referenceId; /* OPTIONAL */ + Z_StringList *inputResultSetNames; + char *sortedResultSetName; + Z_SortKeySpecList *sortSequence; + Z_OtherInformation *otherInfo; /* OPTIONAL */ +} Z_SortRequest; + +/* ----------------------- Resource Report ------------------ */ + +typedef struct Z_ResourceReportRequest +{ + Z_ReferenceId *referenceId; /* OPTIONAL */ + Z_ReferenceId *opId; /* OPTIONAL */ + Odr_oid *prefResourceReportFormat; /* OPTIONAL */ + Z_OtherInformation *otherInfo; /* OPTIONAL */ +} Z_ResourceReportRequest; + +typedef struct Z_ResourceReportResponse +{ + Z_ReferenceId *referenceId; /* OPTIONAL */ + int *resourceReportStatus; +#define Z_ResourceReportStatus_success 0 +#define Z_ResourceReportStatus_partial 1 +#define Z_ResourceReportStatus_failure_1 2 +#define Z_ResourceReportStatus_failure_2 3 +#define Z_ResourceReportStatus_failure_3 4 +#define Z_ResourceReportStatus_failure_4 5 +#define Z_ResourceReportStatus_failure_5 6 +#define Z_ResourceReportStatus_failure_6 7 + Z_External *resourceReport; /* OPTIONAL */ + Z_OtherInformation *otherInfo; /* OPTIONAL */ +} Z_ResourceReportResponse; + /* ------------------------ APDU ---------------------------- */ typedef struct Z_APDU { - enum - { - Z_APDU_initRequest, - Z_APDU_initResponse, - Z_APDU_searchRequest, - Z_APDU_searchResponse, - Z_APDU_presentRequest, - Z_APDU_presentResponse, - Z_APDU_resourceControlRequest, - Z_APDU_resourceControlResponse, - Z_APDU_triggerResourceControlRequest, - Z_APDU_scanRequest, - Z_APDU_scanResponse - } which; + int which; +#define Z_APDU_initRequest 0 +#define Z_APDU_initResponse 1 +#define Z_APDU_searchRequest 2 +#define Z_APDU_searchResponse 3 +#define Z_APDU_presentRequest 4 +#define Z_APDU_presentResponse 5 +#define Z_APDU_deleteResultSetRequest 6 +#define Z_APDU_deleteResultSetResponse 7 +#define Z_APDU_resourceControlRequest 8 +#define Z_APDU_resourceControlResponse 9 +#define Z_APDU_triggerResourceControlRequest 10 +#define Z_APDU_scanRequest 11 +#define Z_APDU_scanResponse 12 +#define Z_APDU_segmentRequest 13 +#define Z_APDU_extendedServicesRequest 14 +#define Z_APDU_extendedServicesResponse 15 +#define Z_APDU_close 16 +#define Z_APDU_accessControlRequest 17 +#define Z_APDU_accessControlResponse 18 +#define Z_APDU_sortRequest 20 +#define Z_APDU_sortResponse 21 +#define Z_APDU_resourceReportRequest 22 +#define Z_APDU_resourceReportResponse 23 union { Z_InitRequest *initRequest; @@ -662,14 +1257,88 @@ typedef struct Z_APDU Z_SearchResponse *searchResponse; Z_PresentRequest *presentRequest; Z_PresentResponse *presentResponse; + Z_DeleteResultSetRequest *deleteResultSetRequest; + Z_DeleteResultSetResponse *deleteResultSetResponse; + Z_AccessControlRequest *accessControlRequest; + Z_AccessControlResponse *accessControlResponse; Z_ResourceControlRequest *resourceControlRequest; Z_ResourceControlResponse *resourceControlResponse; Z_TriggerResourceControlRequest *triggerResourceControlRequest; + Z_ResourceReportRequest *resourceReportRequest; + Z_ResourceReportResponse *resourceReportResponse; Z_ScanRequest *scanRequest; Z_ScanResponse *scanResponse; + Z_SortRequest *sortRequest; + Z_SortResponse *sortResponse; + Z_Segment *segmentRequest; + Z_ExtendedServicesRequest *extendedServicesRequest; + Z_ExtendedServicesResponse *extendedServicesResponse; + Z_Close *close; } u; } Z_APDU; -int z_APDU(ODR o, Z_APDU **p, int opt); +YAZ_EXPORT int z_APDU(ODR o, Z_APDU **p, int opt, const char *name); +YAZ_EXPORT int z_SUTRS(ODR o, Odr_oct **p, int opt, const char *name); + +YAZ_EXPORT Z_InitRequest *zget_InitRequest(ODR o); +YAZ_EXPORT Z_InitResponse *zget_InitResponse(ODR o); +YAZ_EXPORT Z_SearchRequest *zget_SearchRequest(ODR o); +YAZ_EXPORT Z_SearchResponse *zget_SearchResponse(ODR o); +YAZ_EXPORT Z_PresentRequest *zget_PresentRequest(ODR o); +YAZ_EXPORT Z_PresentResponse *zget_PresentResponse(ODR o); +YAZ_EXPORT Z_DeleteResultSetRequest *zget_DeleteResultSetRequest(ODR o); +YAZ_EXPORT Z_DeleteResultSetResponse *zget_DeleteResultSetResponse(ODR o); +YAZ_EXPORT Z_ScanRequest *zget_ScanRequest(ODR o); +YAZ_EXPORT Z_ScanResponse *zget_ScanResponse(ODR o); +YAZ_EXPORT Z_TriggerResourceControlRequest *zget_TriggerResourceControlRequest(ODR o); +YAZ_EXPORT Z_ResourceControlRequest *zget_ResourceControlRequest(ODR o); +YAZ_EXPORT Z_ResourceControlResponse *zget_ResourceControlResponse(ODR o); +YAZ_EXPORT Z_Close *zget_Close(ODR o); +YAZ_EXPORT int z_StringList(ODR o, Z_StringList **p, int opt, + const char *name); +YAZ_EXPORT int z_InternationalString(ODR o, char **p, int opt, + const char *name); +YAZ_EXPORT int z_OtherInformation(ODR o, Z_OtherInformation **p, int opt, + const char *naem); +YAZ_EXPORT int z_ElementSetName(ODR o, char **p, int opt, const char *name); +YAZ_EXPORT int z_IntUnit(ODR o, Z_IntUnit **p, int opt, const char *name); +YAZ_EXPORT int z_Unit(ODR o, Z_Unit **p, int opt, const char *name); +YAZ_EXPORT int z_DatabaseName(ODR o, Z_DatabaseName **p, int opt, + const char *name); +YAZ_EXPORT int z_StringOrNumeric(ODR o, Z_StringOrNumeric **p, int opt, + const char *name); +YAZ_EXPORT int z_OtherInformationUnit(ODR o, Z_OtherInformationUnit **p, + int opt, const char *name); +YAZ_EXPORT int z_Term(ODR o, Z_Term **p, int opt, const char *name); +YAZ_EXPORT int z_Specification(ODR o, Z_Specification **p, int opt, + const char *name); +YAZ_EXPORT int z_Permissions(ODR o, Z_Permissions **p, int opt, + const char *name); +YAZ_EXPORT int z_DiagRec(ODR o, Z_DiagRec **p, int opt, const char *name); +YAZ_EXPORT int z_DiagRecs(ODR o, Z_DiagRecs **p, int opt, const char *name); +YAZ_EXPORT int z_AttributeList(ODR o, Z_AttributeList **p, int opt, + const char *name); +YAZ_EXPORT int z_DefaultDiagFormat(ODR o, Z_DefaultDiagFormat **p, int opt, + const char *name); +YAZ_EXPORT Z_APDU *zget_APDU(ODR o, int which); +YAZ_EXPORT int z_Query(ODR o, Z_Query **p, int opt, const char *name); + +#ifdef __cplusplus +} +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include #endif