* Copyright (C) 1995-2007, Index Data ApS
* See the file LICENSE for details.
*
- * $Id: zoom-c.c,v 1.131 2007-05-23 11:54:47 adam Exp $
+ * $Id: zoom-c.c,v 1.137 2007-06-25 18:34:27 adam Exp $
*/
/**
* \file zoom-c.c
odr_prepend(c->odr_out, "ZOOM-C",
ireq->implementationName));
- version = odr_strdup(c->odr_out, "$Revision: 1.131 $");
+ version = odr_strdup(c->odr_out, "$Revision: 1.137 $");
if (strlen(version) > 10) /* check for unexpanded CVS strings */
version[strlen(version)-2] = '\0';
ireq->implementationVersion =
static void response_default_diag(ZOOM_connection c, Z_DefaultDiagFormat *r)
{
- oid_class oclass;
+ char oid_name_buf[OID_STR_MAX];
+ const char *oid_name;
char *addinfo = 0;
+ oid_name = yaz_oid_to_string_buf(r->diagnosticSetId, 0, oid_name_buf);
switch (r->which)
{
case Z_DefaultDiagFormat_v2Addinfo:
}
xfree(c->addinfo);
c->addinfo = 0;
- set_dset_error(c, *r->condition,
- yaz_oid_to_string(yaz_oid_std(),
- r->diagnosticSetId, &oclass),
- addinfo, 0);
+ set_dset_error(c, *r->condition, oid_name, addinfo, 0);
}
static void response_diag(ZOOM_connection c, Z_DiagRec *p)
Z_APDU *apdu = zget_APDU(p->odr_out, Z_APDU_extendedServicesRequest);
Z_ExtendedServicesRequest *req = apdu->u.extendedServicesRequest;
- *req->function = Z_ExtendedServicesRequest_create;
-
str = ZOOM_options_get(p->options, "package-name");
if (str && *str)
req->packageName = odr_strdup(p->odr_out, str);
if (str)
{
if (!strcmp (str, "create"))
- *req->function = 1;
+ *req->function = Z_ExtendedServicesRequest_create;
if (!strcmp (str, "delete"))
- *req->function = 2;
+ *req->function = Z_ExtendedServicesRequest_delete;
if (!strcmp (str, "modify"))
- *req->function = 3;
+ *req->function = Z_ExtendedServicesRequest_modify;
+ }
+
+ str = ZOOM_options_get(p->options, "waitAction");
+ if (str)
+ {
+ if (!strcmp (str, "wait"))
+ *req->waitAction = Z_ExtendedServicesRequest_wait;
+ if (!strcmp (str, "waitIfPossible"))
+ *req->waitAction = Z_ExtendedServicesRequest_waitIfPossible;
+ if (!strcmp (str, "dontWait"))
+ *req->waitAction = Z_ExtendedServicesRequest_dontWait;
+ if (!strcmp (str, "dontReturnPackage"))
+ *req->waitAction = Z_ExtendedServicesRequest_dontReturnPackage;
}
return apdu;
}
const char *recordIdNumber = ZOOM_options_get(p->options, "recordIdNumber");
const char *record_buf = ZOOM_options_get(p->options, "record");
const char *syntax_str = ZOOM_options_get(p->options, "syntax");
+
+ const char *correlationInfo_note =
+ ZOOM_options_get(p->options, "correlationInfo.note");
+ const char *correlationInfo_id =
+ ZOOM_options_get(p->options, "correlationInfo.id");
int action_no = -1;
Odr_oid *syntax_oid = 0;
Z_IUSuppliedRecords *notToKeep;
Z_External *r = (Z_External *)
odr_malloc(p->odr_out, sizeof(*r));
+ const char *elementSetName =
+ ZOOM_options_get(p->options, "elementSetName");
apdu->u.extendedServicesRequest->taskSpecificParameters = r;
toKeep->databaseName = odr_strdup(p->odr_out, first_db);
toKeep->schema = 0;
+
toKeep->elementSetName = 0;
+ if (elementSetName)
+ toKeep->elementSetName = odr_strdup(p->odr_out, elementSetName);
+
toKeep->actionQualifier = 0;
toKeep->action = odr_intdup(p->odr_out, action_no);
else
notToKeep->elements[0]->u.opaque = 0;
notToKeep->elements[0]->supplementalId = 0;
- notToKeep->elements[0]->correlationInfo = 0;
+ if (correlationInfo_note || correlationInfo_id)
+ {
+ Z_IUCorrelationInfo *ci;
+ ci = notToKeep->elements[0]->correlationInfo =
+ odr_malloc(p->odr_out, sizeof(*ci));
+ ci->note = correlationInfo_note ?
+ odr_strdup(p->odr_out, correlationInfo_note) : 0;
+ ci->id = correlationInfo_id ?
+ odr_intdup(p->odr_out, atoi(correlationInfo_id)) : 0;
+ }
+ else
+ notToKeep->elements[0]->correlationInfo = 0;
notToKeep->elements[0]->record =
z_ext_record_oid(p->odr_out, syntax_oid,
record_buf, strlen(record_buf));
switch(apdu->which)
{
case Z_APDU_initResponse:
- yaz_log(log_api, "%p recv_apd: Received Init response", c);
+ yaz_log(log_api, "%p recv_apdu: Received Init response", c);
initrs = apdu->u.initResponse;
ZOOM_connection_option_set(c, "serverImplementationId",
initrs->implementationId ?
if (c->cs->io_pending & CS_WANT_READ)
mask += ZOOM_SELECT_READ;
ZOOM_connection_set_mask(c, mask);
+ event = ZOOM_Event_create(ZOOM_EVENT_NONE);
+ ZOOM_connection_put_event(c, event);
}
else if (ret == 0)
{