/* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2013 Index Data
+ * Copyright (C) Index Data
* See the file LICENSE for details.
*/
/**
r->which = Z_External_single;
r->u.single_ASN1_type =
- odr_create_Odr_oct(out,
- (unsigned char *)illRequest_buf,
- illRequest_size);
+ odr_create_Odr_oct(out, illRequest_buf, illRequest_size);
}
return r;
}
ext->indirect_reference = 0;
ext->which = Z_External_octet;
- ext->u.single_ASN1_type =
- odr_create_Odr_oct(p->odr_out, (const unsigned char *) doc, len);
+ ext->u.single_ASN1_type = odr_create_Odr_oct(p->odr_out, doc, len);
return apdu;
}
if (recordIdOpaque)
{
notToKeep->elements[0]->u.opaque =
- odr_create_Odr_oct(p->odr_out,
- (const unsigned char *) recordIdOpaque,
+ odr_create_Odr_oct(p->odr_out, recordIdOpaque,
recordIdOpaque_len);
}
else if (recordIdNumber)
int lslb, ssub, mspn;
const char *syntax;
const char *schema;
- Z_APDU *apdu = zget_APDU(c->odr_out, Z_APDU_searchRequest);
- Z_SearchRequest *search_req = apdu->u.searchRequest;
+ Z_APDU *apdu;
+ Z_SearchRequest *search_req;
const char *elementSetName;
const char *smallSetElementSetName;
const char *mediumSetElementSetName;
assert(c->tasks->which == ZOOM_TASK_SEARCH);
r = c->tasks->u.search.resultset;
+ if (r->live_set)
+ return send_Z3950_present(c);
+
+ apdu = zget_APDU(c->odr_out, Z_APDU_searchRequest);
+ search_req = apdu->u.searchRequest;
yaz_log(c->log_details, "%p ZOOM_connection_send_search set=%p", c, r);
if (facets) {
Z_FacetList *facet_list = yaz_pqf_parse_facet_list(c->odr_out, facets);
if (facet_list) {
- Z_OtherInformation **oi;
- yaz_oi_APDU(apdu, &oi);
+ Z_OtherInformation **oi = &search_req->additionalSearchInfo;
yaz_oi_set_facetlist(oi, c->odr_out, facet_list);
}
else
result sets on the server. */
for (ord = 1; ; ord++)
{
-#if ZOOM_RESULT_LISTS
- ZOOM_resultsets rsp;
- sprintf(setname, "%d", ord);
- for (rsp = c->resultsets; rsp; rsp = rsp->next)
- if (rsp->resultset->setname && !strcmp(rsp->resultset->setname, setname))
- break;
- if (!rsp)
- break;
-#else
ZOOM_resultset rp;
sprintf(setname, "%d", ord);
for (rp = c->resultsets; rp; rp = rp->next)
break;
if (!rp)
break;
-#endif
-
}
r->setname = xstrdup(setname);
yaz_log(c->log_details, "%p ZOOM_connection_send_search: "
handle_facet_result(c, resultset, sr->additionalSearchInfo);
resultset->size = *sr->resultCount;
+ resultset->live_set = 1;
+
+#if HAVE_LIBMEMCACHED_MEMCACHED_H
+ if (c->mc_st)
+ {
+ uint32_t flags = 0;
+ memcached_return_t rc;
+ time_t expiration = 36000;
+ char str[40];
+
+ sprintf(str, ODR_INT_PRINTF, *sr->resultCount);
+ rc = memcached_set(c->mc_st,
+ wrbuf_buf(resultset->mc_key),wrbuf_len(resultset->mc_key),
+ str, strlen(str), expiration, flags);
+ yaz_log(YLOG_LOG, "Key=%s value=%s rc=%u %s",
+ wrbuf_cstr(resultset->mc_key), str, (unsigned) rc,
+ memcached_last_error_message(c->mc_st));
+ }
+#endif
handle_Z3950_records(c, sr->records, 0);
}
elementSetName = c->tasks->u.search.elementSetName;
schema = c->tasks->u.search.schema;
break;
- case ZOOM_TASK_RETRIEVE:
- resultset = c->tasks->u.retrieve.resultset;
- start = &c->tasks->u.retrieve.start;
- count = &c->tasks->u.retrieve.count;
- syntax = c->tasks->u.retrieve.syntax;
- elementSetName = c->tasks->u.retrieve.elementSetName;
- schema = c->tasks->u.retrieve.schema;
- break;
- default:
return;
}
if (sr && sr->which == Z_Records_NSD)
"ZOOM C generated. Present phase and no records");
ZOOM_record_cache_add(resultset, myrec, *start,
syntax, elementSetName, schema, 0);
+ *count = 0;
}
}
else if (present_phase)
"ZOOM C generated: Present response and no records");
ZOOM_record_cache_add(resultset, myrec, *start,
syntax, elementSetName, schema, 0);
+ *count = 0;
}
}
}
elementSetName = c->tasks->u.search.elementSetName;
schema = c->tasks->u.search.schema;
break;
- case ZOOM_TASK_RETRIEVE:
- resultset = c->tasks->u.retrieve.resultset;
- start = &c->tasks->u.retrieve.start;
- count = &c->tasks->u.retrieve.count;
- syntax = c->tasks->u.retrieve.syntax;
- elementSetName = c->tasks->u.retrieve.elementSetName;
- schema = c->tasks->u.retrieve.schema;
- break;
default:
return zoom_complete;
}