X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Fzoom-record-cache.c;h=957e8f911b3bb1e457a8d2eb485261d610281fa0;hp=fe1aeec1e7c68eb2a99df57a4ce0fab39763f1fe;hb=d1b6ed4a27c255041e3d719e4b05ab476c337bbf;hpb=5eabfe6397e68d2a77af315ec7edfb30a1e6a54d diff --git a/src/zoom-record-cache.c b/src/zoom-record-cache.c index fe1aeec..957e8f9 100644 --- a/src/zoom-record-cache.c +++ b/src/zoom-record-cache.c @@ -131,31 +131,43 @@ void ZOOM_record_cache_add(ZOOM_resultset r, Z_NamePlusRecord *npr, ZOOM_memcached_add(r, npr, pos, syntax, elementSetName, schema, diag); } -ZOOM_record ZOOM_record_cache_lookup(ZOOM_resultset r, int pos, - const char *syntax, - const char *elementSetName, - const char *schema) +ZOOM_record ZOOM_record_cache_lookup_i(ZOOM_resultset r, int pos, + const char *syntax, + const char *elementSetName, + const char *schema) { ZOOM_record_cache rc; - Z_NamePlusRecord *npr; for (rc = r->record_hash[record_hash(pos)]; rc; rc = rc->next) { if (pos == rc->pos) { - ZOOM_Event event; if (yaz_strcmp_null(schema, rc->schema)) continue; if (yaz_strcmp_null(elementSetName,rc->elementSetName)) continue; if (yaz_strcmp_null(syntax, rc->syntax)) continue; - event = ZOOM_Event_create(ZOOM_EVENT_RECV_RECORD); - ZOOM_connection_put_event(r->connection, event); - return &rc->rec; } } + return 0; +} + +ZOOM_record ZOOM_record_cache_lookup(ZOOM_resultset r, int pos, + const char *syntax, + const char *elementSetName, + const char *schema) +{ + Z_NamePlusRecord *npr; + ZOOM_record rec = ZOOM_record_cache_lookup_i(r, pos, syntax, + elementSetName, schema); + if (rec) + { + ZOOM_Event event = ZOOM_Event_create(ZOOM_EVENT_RECV_RECORD); + ZOOM_connection_put_event(r->connection, event); + return rec; + } npr = ZOOM_memcached_lookup(r, pos, syntax, elementSetName, schema); if (npr) return record_cache_add(r, npr, pos, syntax, elementSetName,