* Copyright (C) 1995-2005, Index Data ApS
* See the file LICENSE for details.
*
- * $Id: seshigh.c,v 1.66 2006-01-20 10:34:51 adam Exp $
+ * $Id: seshigh.c,v 1.68 2006-03-13 11:59:27 adam Exp $
*/
/**
* \file seshigh.c
(*assoc->init->bend_scan))(assoc->backend, bsrr);
}
else if (srw_req->query_type == Z_SRW_query_type_cql
- && assoc->init->bend_srw_scan)
+ && assoc->init->bend_scan && assoc->cql_transform)
{
- if (assoc->cql_transform)
- {
- int srw_error;
- bsrr->scanClause = 0;
- bsrr->attributeset = VAL_NONE;
- bsrr->term = odr_malloc(assoc->decode, sizeof(*bsrr->term));
- srw_error = cql2pqf_scan(assoc->encode,
- srw_req->scanClause.cql,
- assoc->cql_transform,
- bsrr->term);
- if (srw_error)
- yaz_add_srw_diagnostic(assoc->encode, &srw_res->diagnostics,
- &srw_res->num_diagnostics,
- srw_error, 0);
- else
- {
- ((int (*)(void *, bend_scan_rr *))
- (*assoc->init->bend_scan))(assoc->backend, bsrr);
- }
- }
+ int srw_error;
+ bsrr->scanClause = 0;
+ bsrr->attributeset = VAL_NONE;
+ bsrr->term = odr_malloc(assoc->decode, sizeof(*bsrr->term));
+ srw_error = cql2pqf_scan(assoc->encode,
+ srw_req->scanClause.cql,
+ assoc->cql_transform,
+ bsrr->term);
+ if (srw_error)
+ yaz_add_srw_diagnostic(assoc->encode, &srw_res->diagnostics,
+ &srw_res->num_diagnostics,
+ srw_error, 0);
else
{
- bsrr->term = 0;
- bsrr->attributeset = VAL_NONE;
- bsrr->scanClause = srw_req->scanClause.cql;
((int (*)(void *, bend_scan_rr *))
- (*assoc->init->bend_srw_scan))(assoc->backend, bsrr);
+ (*assoc->init->bend_scan))(assoc->backend, bsrr);
}
}
+ else if (srw_req->query_type == Z_SRW_query_type_cql
+ && assoc->init->bend_srw_scan)
+ {
+ bsrr->term = 0;
+ bsrr->attributeset = VAL_NONE;
+ bsrr->scanClause = srw_req->scanClause.cql;
+ ((int (*)(void *, bend_scan_rr *))
+ (*assoc->init->bend_srw_scan))(assoc->backend, bsrr);
+ }
else
{
yaz_add_srw_diagnostic(assoc->encode, &srw_res->diagnostics,
assoc->init->implementation_name,
odr_prepend(assoc->encode, "GFS", resp->implementationName));
- version = odr_strdup(assoc->encode, "$Revision: 1.66 $");
+ version = odr_strdup(assoc->encode, "$Revision: 1.68 $");
if (strlen(version) > 10) /* check for unexpanded CVS strings */
version[strlen(version)-2] = '\0';
resp->implementationVersion = odr_prepend(assoc->encode,
static Z_APDU *process_ESRequest(association *assoc, request *reqb, int *fd)
{
bend_esrequest_rr esrequest;
+ const char *ext_name = "unknown";
Z_ExtendedServicesRequest *req =
reqb->apdu_request->u.extendedServicesRequest;
Z_ExtendedServicesResponse *resp = apdu->u.extendedServicesResponse;
- yaz_log(log_requestdetail,"Got EsRequest");
-
esrequest.esr = reqb->apdu_request->u.extendedServicesRequest;
esrequest.stream = assoc->encode;
esrequest.decode = assoc->decode;
esrequest.association = assoc;
esrequest.taskPackage = 0;
esrequest.referenceId = req->referenceId;
+
+ if (esrequest.esr && esrequest.esr->taskSpecificParameters)
+ {
+ switch(esrequest.esr->taskSpecificParameters->which)
+ {
+ case Z_External_itemOrder:
+ ext_name = "ItemOrder"; break;
+ case Z_External_update:
+ ext_name = "Update"; break;
+ case Z_External_update0:
+ ext_name = "Update0"; break;
+ case Z_External_ESAdmin:
+ ext_name = "Admin"; break;
+
+ }
+ }
+
(*assoc->init->bend_esrequest)(assoc->backend, &esrequest);
/* If the response is being delayed, return NULL */
if (esrequest.errcode == -1)
{
/* Backend service indicates request will be processed */
- yaz_log(log_request,"EsRequest OK: Accepted !");
+ yaz_log(log_request, "Extended Service: %s (accepted)", ext_name);
*resp->operationStatus = Z_ExtendedServicesResponse_accepted;
}
else if (esrequest.errcode == 0)
{
/* Backend service indicates request will be processed */
- yaz_log(log_request,"EsRequest OK: Done !");
+ yaz_log(log_request, "Extended Service: %s (done)", ext_name);
*resp->operationStatus = Z_ExtendedServicesResponse_done;
}
else
zget_DiagRecs(assoc->encode, esrequest.errcode,
esrequest.errstring);
/* Backend indicates error, request will not be processed */
- yaz_log(YLOG_DEBUG,"Request could not be processed...failure !");
+ yaz_log(log_request, "Extended Service: %s (failed)", ext_name);
*resp->operationStatus = Z_ExtendedServicesResponse_failure;
resp->num_diagnostics = diagRecs->num_diagRecs;
resp->diagnostics = diagRecs->diagRecs;