X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=server%2Fseshigh.c;h=3013c834d94947f3e72b2b2cc3f47a7baf285c15;hb=e973eb3ceaeaf25735f8250aed8400c87ddcb9da;hp=2e32af26b3d54b8d4c99b0dc62b902c82d9a4414;hpb=0008748e4e9730bfffd4a4c5aba63fb0fe9a3371;p=yaz-moved-to-github.git diff --git a/server/seshigh.c b/server/seshigh.c index 2e32af2..3013c83 100644 --- a/server/seshigh.c +++ b/server/seshigh.c @@ -1,10 +1,25 @@ /* - * Copyright (c) 1995-1999, Index Data + * Copyright (c) 1995-2000, Index Data * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss * * $Log: seshigh.c,v $ - * Revision 1.95 1999-10-11 10:01:24 adam + * Revision 1.101 2000-01-12 14:36:07 adam + * Added printing stream (ODR) for backend functions. + * + * Revision 1.100 1999/12/16 23:36:19 adam + * Implemented ILL protocol. Minor updates ASN.1 compiler. + * + * Revision 1.99 1999/11/30 13:47:12 adam + * Improved installation. Moved header files to include/yaz. + * + * Revision 1.98 1999/11/29 15:12:27 adam + * Changed the way implementationName - and version is set. + * + * Revision 1.96 1999/11/04 14:58:44 adam + * Added status elements for backend delete result set handler. + * Updated delete result result set command for client. + * + * Revision 1.95 1999/10/11 10:01:24 adam * Implemented bend_sort_rr handler for frontend server. * * Revision 1.94 1999/08/27 09:40:32 adam @@ -328,7 +343,6 @@ * */ -#include #include #include #ifdef WIN32 @@ -338,17 +352,18 @@ #endif #include -#include -#include +#include +#include +#include #include "eventl.h" #include "session.h" -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include -#include +#include static int process_request(association *assoc, request *req, char **msg); void backend_response(IOCHAN i, int event); @@ -821,6 +836,7 @@ static Z_APDU *process_initRequest(association *assoc, request *reqb) yaz_log(LOG_LOG, "Version: %s", req->implementationVersion); binitreq.stream = assoc->encode; + binitreq.print = assoc->print; binitreq.configname = "default-config"; binitreq.auth = req->idAuthentication; binitreq.referenceId = req->referenceId; @@ -921,15 +937,15 @@ static Z_APDU *process_initRequest(association *assoc, request *reqb) resp->preferredMessageSize = &assoc->preferredMessageSize; resp->maximumRecordSize = &assoc->maximumRecordSize; - resp->implementationName = "Index Data/YAZ Generic Frontend Server"; + resp->implementationName = "GFS"; if (binitreq.implementation_name) { char *nv = (char *) odr_malloc (assoc->encode, - strlen(binitreq.implementation_name) + 3 + + strlen(binitreq.implementation_name) + 10 + strlen(resp->implementationName)); - sprintf (nv, "%s %s", + sprintf (nv, "%s / %s", resp->implementationName, binitreq.implementation_name); resp->implementationName = nv; } @@ -937,9 +953,9 @@ static Z_APDU *process_initRequest(association *assoc, request *reqb) { char *nv = (char *) odr_malloc (assoc->encode, - strlen(binitreq.implementation_version) + 3 + + strlen(binitreq.implementation_version) + 10 + strlen(resp->implementationVersion)); - sprintf (nv, "%s %s", + sprintf (nv, "YAZ %s / %s", resp->implementationVersion, binitreq.implementation_version); resp->implementationVersion = nv; } @@ -1122,6 +1138,7 @@ static Z_Records *pack_records(association *a, char *setname, int start, freq.comp = comp; freq.format = format; freq.stream = a->encode; + freq.print = a->print; freq.surrogate_flag = 0; freq.referenceId = referenceId; if (!(fres = bend_fetch(a->backend, &freq, 0))) @@ -1242,6 +1259,7 @@ static Z_APDU *process_searchRequest(association *assoc, request *reqb, bsrr->query = req->query; bsrr->stream = assoc->encode; bsrr->decode = assoc->decode; + bsrr->print = assoc->print; bsrr->errcode = 0; bsrr->hits = 0; bsrr->errstring = NULL; @@ -1263,6 +1281,7 @@ static Z_APDU *process_searchRequest(association *assoc, request *reqb, bsrq.referenceId = req->referenceId; bsrq.stream = assoc->encode; bsrq.decode = assoc->decode; + bsrq.print = assoc->print; if (!(bsrt = bend_search (assoc->backend, &bsrq, fd))) return 0; bsrr->hits = bsrt->hits; @@ -1428,6 +1447,7 @@ static Z_APDU *process_presentRequest(association *assoc, request *reqb, bprr->comp = req->recordComposition; bprr->referenceId = req->referenceId; bprr->stream = assoc->encode; + bprr->print = assoc->print; bprr->request = reqb; bprr->association = assoc; bprr->errcode = 0; @@ -1478,6 +1498,7 @@ static int bend_default_scan (void *handle, bend_scan_rr *rr) srq.term_position = rr->term_position; srq.num_entries = rr->num_entries; srq.stream = rr->stream; + srq.print = rr->print; srs = bend_scan(handle, &srq, 0); @@ -1551,6 +1572,7 @@ static Z_APDU *process_scanRequest(association *assoc, request *reqb, int *fd) bsrr->term = req->termListAndStartPoint; bsrr->referenceId = req->referenceId; bsrr->stream = assoc->encode; + bsrr->print = assoc->print; if (!(attset = oid_getentbyoid(req->attributeSet)) || attset->oclass != CLASS_RECSYN) bsrr->attributeset = VAL_NONE; @@ -1652,6 +1674,7 @@ static Z_APDU *process_sortRequest(association *assoc, request *reqb, bsrr->output_setname = req->sortedResultSetName; bsrr->sort_sequence = req->sortSequence; bsrr->stream = assoc->encode; + bsrr->print = assoc->print; bsrr->sort_status = Z_SortStatus_failure; bsrr->errcode = 0; @@ -1704,9 +1727,18 @@ static Z_APDU *process_deleteRequest(association *assoc, request *reqb, bdrr->num_setnames = req->num_resultSetList; bdrr->setnames = req->resultSetList; bdrr->stream = assoc->encode; + bdrr->print = assoc->print; bdrr->function = *req->deleteFunction; bdrr->referenceId = req->referenceId; - + bdrr->statuses = 0; + if (bdrr->num_setnames > 0) + { + int i; + bdrr->statuses = odr_malloc(assoc->encode, sizeof(*bdrr->statuses) * + bdrr->num_setnames); + for (i = 0; i < bdrr->num_setnames; i++) + bdrr->statuses[i] = 0; + } ((int (*)(void *, bend_delete_rr *)) (*assoc->bend_delete))(assoc->backend, bdrr); @@ -1717,6 +1749,27 @@ static Z_APDU *process_deleteRequest(association *assoc, request *reqb, *res->deleteOperationStatus = bdrr->delete_status; res->deleteListStatuses = 0; + if (bdrr->num_setnames > 0) + { + int i; + res->deleteListStatuses = odr_malloc(assoc->encode, + sizeof(*res->deleteListStatuses)); + res->deleteListStatuses->num = bdrr->num_setnames; + res->deleteListStatuses->elements = + odr_malloc (assoc->encode, + sizeof(*res->deleteListStatuses->elements) * + bdrr->num_setnames); + for (i = 0; inum_setnames; i++) + { + res->deleteListStatuses->elements[i] = + odr_malloc (assoc->encode, + sizeof(**res->deleteListStatuses->elements)); + res->deleteListStatuses->elements[i]->status = bdrr->statuses+i; + res->deleteListStatuses->elements[i]->id = + odr_strdup (assoc->encode, bdrr->setnames[i]); + + } + } res->numberNotDeleted = 0; res->bulkStatuses = 0; res->deleteMessage = 0; @@ -1832,6 +1885,8 @@ static Z_APDU *process_ESRequest(association *assoc, request *reqb, int *fd) esrequest.esr = reqb->request->u.extendedServicesRequest; esrequest.stream = assoc->encode; + esrequest.decode = assoc->decode; + esrequest.print = assoc->print; esrequest.errcode = 0; esrequest.errstring = NULL; esrequest.request = reqb;