X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fzoom-c.c;h=0ff631debf6eba7db048d25d18c2655ccda1af61;hb=15e6706cde980cdf149151fa2ceb5630646fafa9;hp=22c47195de403e519e766960ea58aa35661d05c9;hpb=a89ed3c40c9eab3721ccbd5e91919ba06208edbc;p=yaz-moved-to-github.git diff --git a/src/zoom-c.c b/src/zoom-c.c index 22c4719..0ff631d 100644 --- a/src/zoom-c.c +++ b/src/zoom-c.c @@ -2,7 +2,7 @@ * Copyright (C) 1995-2005, Index Data ApS * See the file LICENSE for details. * - * $Id: zoom-c.c,v 1.78 2006-06-15 10:34:17 adam Exp $ + * $Id: zoom-c.c,v 1.81 2006-07-06 10:17:54 adam Exp $ */ /** * \file zoom-c.c @@ -72,6 +72,7 @@ static ZOOM_Event ZOOM_Event_create (int kind) event->kind = kind; event->next = 0; event->prev = 0; + yaz_log(log_details, "ZOOM_event_create(%d)", kind); return event; } @@ -151,7 +152,7 @@ static void set_dset_error (ZOOM_connection c, int error, addinfo2 ? addinfo2 : ""); } -#if HAVE_XML2 +#if YAZ_HAVE_XML2 static void set_HTTP_error (ZOOM_connection c, int error, const char *addinfo, const char *addinfo2) { @@ -1007,7 +1008,7 @@ static zoom_ret do_connect (ZOOM_connection c) if (c->cs && c->cs->protocol == PROTO_HTTP) { -#if HAVE_XML2 +#if YAZ_HAVE_XML2 const char *path = 0; c->proto = PROTO_HTTP; @@ -1195,7 +1196,7 @@ static zoom_ret ZOOM_connection_send_init (ZOOM_connection c) ZOOM_options_get(c->options, "implementationName"), odr_prepend(c->odr_out, "ZOOM-C", ireq->implementationName)); - version = odr_strdup(c->odr_out, "$Revision: 1.78 $"); + version = odr_strdup(c->odr_out, "$Revision: 1.81 $"); if (strlen(version) > 10) /* check for unexpanded CVS strings */ version[strlen(version)-2] = '\0'; ireq->implementationVersion = odr_prepend(c->odr_out, @@ -1273,7 +1274,7 @@ static zoom_ret ZOOM_connection_send_init (ZOOM_connection c) return send_APDU (c, apdu); } -#if HAVE_XML2 +#if YAZ_HAVE_XML2 static zoom_ret send_srw (ZOOM_connection c, Z_SRW_PDU *sr) { Z_GDU *gdu; @@ -1304,7 +1305,7 @@ static zoom_ret send_srw (ZOOM_connection c, Z_SRW_PDU *sr) } #endif -#if HAVE_XML2 +#if YAZ_HAVE_XML2 static zoom_ret ZOOM_connection_srw_send_search(ZOOM_connection c) { int i; @@ -1339,8 +1340,16 @@ static zoom_ret ZOOM_connection_srw_send_search(ZOOM_connection c) record_cache_lookup (resultset, i + resultset->start); if (!rec) break; + else + { + ZOOM_Event event = ZOOM_Event_create(ZOOM_EVENT_RECV_RECORD); + ZOOM_connection_put_event(c, event); + } } - if (i == resultset->count) + resultset->start += i; + resultset->count -= i; + + if (resultset->count == 0) return zoom_complete; } assert(resultset->query); @@ -2106,6 +2115,8 @@ static void handle_records (ZOOM_connection c, Z_Records *sr, record_cache_add (resultset, p->records[i], i+ resultset->start); } + resultset->count -= i; + resultset->start += i; /* transfer our response to search_nmem .. we need it later */ nmem_transfer (resultset->odr->mem, nmem); nmem_destroy (nmem); @@ -2326,6 +2337,7 @@ static zoom_ret send_present(ZOOM_connection c) yaz_log(log_details, "%p send_present no tasks", c); return zoom_complete; } + switch (c->tasks->which) { case ZOOM_TASK_SEARCH: @@ -2364,8 +2376,16 @@ static zoom_ret send_present(ZOOM_connection c) record_cache_lookup (resultset, i + resultset->start); if (!rec) break; + else + { + ZOOM_Event event = ZOOM_Event_create(ZOOM_EVENT_RECV_RECORD); + ZOOM_connection_put_event(c, event); + } } - if (i == resultset->count) + resultset->start += i; + resultset->count -= i; + + if (resultset->count == 0) { yaz_log(log_details, "%p send_present skip=%d no more to fetch", c, i); return zoom_complete; @@ -2374,9 +2394,6 @@ static zoom_ret send_present(ZOOM_connection c) apdu = zget_APDU(c->odr_out, Z_APDU_presentRequest); req = apdu->u.presentRequest; - resultset->start += i; - resultset->count -= i; - if (i) yaz_log(log_details, "%p send_present skip=%d", c, i); @@ -3389,7 +3406,7 @@ static void recv_apdu (ZOOM_connection c, Z_APDU *apdu) } } -#if HAVE_XML2 +#if YAZ_HAVE_XML2 static void handle_srw_response(ZOOM_connection c, Z_SRW_searchRetrieveResponse *res) { @@ -3468,7 +3485,7 @@ static void handle_srw_response(ZOOM_connection c, } #endif -#if HAVE_XML2 +#if YAZ_HAVE_XML2 static void handle_http(ZOOM_connection c, Z_HTTP_Response *hres) { int ret = -1; @@ -3588,7 +3605,7 @@ static int do_read (ZOOM_connection c) recv_apdu (c, gdu->u.z3950); else if (gdu->which == Z_GDU_HTTP_Response) { -#if HAVE_XML2 +#if YAZ_HAVE_XML2 handle_http (c, gdu->u.HTTP_Response); #else set_ZOOM_error(c, ZOOM_ERROR_DECODE, 0); @@ -3884,6 +3901,7 @@ ZOOM_event (int no, ZOOM_connection *cs) int i, r, nfds; int max_fd = 0; + yaz_log(log_details, "ZOOM_event no=%d", no); for (i = 0; i