X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=include%2Fbackend.h;h=2eb7be442f996325fb9b1709ec9852497c541104;hp=603908734dde0fcd08574b034309ef2b1d7e7b86;hb=3060b77b776350c6e677c06b3070542dba5c42b6;hpb=7d30eaa32473c738d9fe494a526044e9cb9be658 diff --git a/include/backend.h b/include/backend.h index 6039087..2eb7be4 100644 --- a/include/backend.h +++ b/include/backend.h @@ -24,7 +24,20 @@ * OF THIS SOFTWARE. * * $Log: backend.h,v $ - * Revision 1.17 1998-01-29 13:15:35 adam + * Revision 1.21 1998-07-20 12:38:41 adam + * Implemented delete result set service to server API. + * + * Revision 1.20 1998/05/27 16:57:06 adam + * Support for surrogate diagnostic records added for bend_fetch. + * + * Revision 1.19 1998/03/31 11:07:45 adam + * Furhter work on UNIverse resource report. + * Added Extended Services handling in frontend server. + * + * Revision 1.18 1998/02/10 11:03:56 adam + * Added support for extended handlers in backend server interface. + * + * Revision 1.17 1998/01/29 13:15:35 adam * Implemented sort for the backend interface. * * Revision 1.16 1997/09/17 12:10:31 adam @@ -42,9 +55,12 @@ #ifdef __cplusplus extern "C" { #endif + +typedef struct request *bend_request; +typedef struct association *bend_association; - -typedef struct bend_searchrequest +/* old search request input */ +typedef struct { char *setname; /* name to give to this set */ int replace_set; /* replace set, if it already exists */ @@ -54,27 +70,62 @@ typedef struct bend_searchrequest ODR stream; /* encoding stream */ } bend_searchrequest; -typedef struct bend_searchresult +/* old search request output */ +typedef struct { int hits; /* number of hits */ int errcode; /* 0==OK */ char *errstring; /* system error string or NULL */ } bend_searchresult; +/* extended search handler (rr = request response) */ +typedef struct { + char *setname; /* name to give to this set */ + int replace_set; /* replace set, if it already exists */ + int num_bases; /* number of databases in list */ + char **basenames; /* databases to search */ + Z_Query *query; /* query structure */ + ODR stream; /* encode stream */ + + bend_request request; + bend_association association; + int *fd; + int hits; /* number of hits */ + int errcode; /* 0==OK */ + char *errstring; /* system error string or NULL */ +} bend_search_rr; + +/* extended present handler. Does not replace bend_fetch. */ +typedef struct { + char *setname; /* set name */ + int start; + int number; /* record number */ + oid_value format; /* One of the CLASS_RECSYN members */ + Z_RecordComposition *comp; /* Formatting instructions */ + ODR stream; /* encoding stream - memory source if required */ + bend_request request; + bend_association association; + + int hits; /* number of hits */ + int errcode; /* 0==OK */ + char *errstring; /* system error string or NULL */ +} bend_present_rr; + YAZ_EXPORT bend_searchresult *bend_search(void *handle, bend_searchrequest *r, int *fd); -YAZ_EXPORT bend_searchresult *bend_searchresponse(void *handle); +YAZ_EXPORT int bend_searchresponse(void *handle, bend_search_rr *bsrr); -typedef struct bend_fetchrequest +typedef struct { char *setname; /* set name */ int number; /* record number */ oid_value format; /* One of the CLASS_RECSYN members */ Z_RecordComposition *comp; /* Formatting instructions */ - ODR stream; /* encoding stream - memory source if required */ + ODR stream; /* encoding stream - memory source if req */ + int surrogate_flag; /* surrogate diagnostic flag (rw) */ } bend_fetchrequest; -typedef struct bend_fetchresult +typedef struct { char *basename; /* name of database that provided record */ int len; /* length of record or -1 if structured */ @@ -89,7 +140,7 @@ YAZ_EXPORT bend_fetchresult *bend_fetch(void *handle, bend_fetchrequest *r, int *fd); YAZ_EXPORT bend_fetchresult *bend_fetchresponse(void *handle); -typedef struct bend_scanrequest +typedef struct { int num_bases; /* number of elements in databaselist */ char **basenames; /* databases to search */ @@ -124,38 +175,43 @@ YAZ_EXPORT bend_scanresult *bend_scan(void *handle, bend_scanrequest *r, int *fd); YAZ_EXPORT bend_scanresult *bend_scanresponse(void *handle); -typedef struct bend_deleterequest -{ - char *setname; -} bend_deleterequest; - -typedef struct bend_deleteresult -{ - int errcode; /* 0==success */ - char *errstring; /* system error string or NULL */ -} bend_deleteresult; - -YAZ_EXPORT bend_deleteresult *bend_delete(void *handle, - bend_deleterequest *r, int *fd); -YAZ_EXPORT bend_deleteresult *bend_deleteresponse(void *handle); +/* delete handler */ +typedef struct bend_delete_rr { + int function; + int num_setnames; + char **setnames; + int delete_status; + ODR stream; +} bend_delete_rr; +/* close handler */ YAZ_EXPORT void bend_close(void *handle); -typedef struct bend_sortrequest +/* sort handler */ +typedef struct bend_sort_rr { int num_input_setnames; char **input_setnames; char *output_setname; Z_SortKeySpecList *sort_sequence; ODR stream; -} bend_sortrequest; -typedef struct bend_sortresult -{ int sort_status; int errcode; char *errstring; -} bend_sortresult; +} bend_sort_rr; + +/* extended services handler. Added in from DALI */ +typedef struct bend_esrequest_rr +{ + int ItemNo; + Z_ExtendedServicesRequest *esr; + ODR stream; /* encoding stream */ + bend_request request; + bend_association association; + int errcode; /* 0==success */ + char *errstring; /* system error string or NULL */ +} bend_esrequest_rr; typedef struct bend_initrequest { @@ -163,8 +219,11 @@ typedef struct bend_initrequest Z_IdAuthentication *auth; ODR stream; /* encoding stream */ - int (*bend_sort) (void *handle, bend_sortrequest *req, - bend_sortresult *res); + int (*bend_sort) (void *handle, bend_sort_rr *rr); + int (*bend_search) (void *handle, bend_search_rr *rr); + int (*bend_present) (void *handle, bend_present_rr *rr); + int (*bend_esrequest) (void *handle, bend_esrequest_rr *rr); + int (*bend_delete)(void *handle, bend_delete_rr *rr); } bend_initrequest; typedef struct bend_initresult @@ -174,7 +233,19 @@ typedef struct bend_initresult void *handle; /* private handle to the backend module */ } bend_initresult; -YAZ_EXPORT bend_initresult MDF *bend_init(bend_initrequest *r); +YAZ_EXPORT bend_initresult *bend_init(bend_initrequest *r); + +YAZ_EXPORT void bend_request_send (bend_association a, bend_request req, + Z_APDU *res); + +YAZ_EXPORT bend_request bend_request_mk (bend_association a); + +YAZ_EXPORT void bend_request_destroy (bend_request *req); + +YAZ_EXPORT Z_ReferenceId *bend_request_getid (ODR odr, bend_request req); +YAZ_EXPORT int bend_backend_respond (bend_association a, bend_request req); +YAZ_EXPORT void bend_request_setdata(bend_request r, void *p); +YAZ_EXPORT void *bend_request_getdata(bend_request r); #ifdef __cplusplus }