/*
- * 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.102 2000-03-15 12:59:49 adam
+ * Added handle member to statserv_control.
+ *
+ * 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
*
*/
-#include <yconfig.h>
#include <stdlib.h>
#include <stdio.h>
#ifdef WIN32
#endif
#include <assert.h>
-#include <xmalloc.h>
-#include <comstack.h>
+#include <yaz/yconfig.h>
+#include <yaz/xmalloc.h>
+#include <yaz/comstack.h>
#include "eventl.h"
#include "session.h"
-#include <proto.h>
-#include <oid.h>
-#include <log.h>
-#include <logrpn.h>
-#include <statserv.h>
+#include <yaz/proto.h>
+#include <yaz/oid.h>
+#include <yaz/log.h>
+#include <yaz/logrpn.h>
+#include <yaz/statserv.h>
-#include <backend.h>
+#include <yaz/backend.h>
static int process_request(association *assoc, request *req, char **msg);
void backend_response(IOCHAN i, int event);
yaz_log(LOG_LOG, "Version: %s", req->implementationVersion);
binitreq.stream = assoc->encode;
- binitreq.configname = "default-config";
+ binitreq.print = assoc->print;
binitreq.auth = req->idAuthentication;
binitreq.referenceId = req->referenceId;
binitreq.implementation_version = 0;
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;
}
{
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;
}
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)))
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;
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;
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;
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);
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;
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;
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);
*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; i<bdrr->num_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;
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;