Extend comment about start facet parameter
[yaz-moved-to-github.git] / src / zoom-record-cache.c
index 84f4dd2..957e8f9 100644 (file)
@@ -56,11 +56,13 @@ static size_t record_hash(int pos)
     return pos % RECORD_HASH_SIZE;
 }
 
-void ZOOM_record_cache_add(ZOOM_resultset r, Z_NamePlusRecord *npr,
-                           int pos,
-                           const char *syntax, const char *elementSetName,
-                           const char *schema,
-                           Z_SRW_diagnostic *diag)
+static ZOOM_record record_cache_add(ZOOM_resultset r,
+                                    Z_NamePlusRecord *npr,
+                                    int pos,
+                                    const char *syntax,
+                                    const char *elementSetName,
+                                    const char *schema,
+                                    Z_SRW_diagnostic *diag)
 {
     ZOOM_record_cache rc = 0;
 
@@ -94,7 +96,9 @@ void ZOOM_record_cache_add(ZOOM_resultset r, Z_NamePlusRecord *npr,
         rc->pos = pos;
         rc->next = r->record_hash[record_hash(pos)];
         r->record_hash[record_hash(pos)] = rc;
+
     }
+
     rc->rec.npr = npr;
     rc->rec.schema = odr_strdup_null(r->odr, schema);
     rc->rec.diag_set = 0;
@@ -114,12 +118,23 @@ void ZOOM_record_cache_add(ZOOM_resultset r, Z_NamePlusRecord *npr,
         rc->rec.diag_message = odr_strdup_null(r->odr, diag->message);
         rc->rec.diag_details = odr_strdup_null(r->odr, diag->details);
     }
+    return &rc->rec;
 }
 
-ZOOM_record ZOOM_record_cache_lookup(ZOOM_resultset r, int pos,
-                                     const char *syntax,
-                                     const char *elementSetName,
-                                     const char *schema)
+void ZOOM_record_cache_add(ZOOM_resultset r, Z_NamePlusRecord *npr,
+                           int pos,
+                           const char *syntax, const char *elementSetName,
+                           const char *schema,
+                           Z_SRW_diagnostic *diag)
+{
+    record_cache_add(r, npr, pos, syntax, elementSetName, schema, diag);
+    ZOOM_memcached_add(r, npr, pos, syntax, elementSetName, schema, diag);
+}
+
+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;
 
@@ -139,6 +154,27 @@ ZOOM_record ZOOM_record_cache_lookup(ZOOM_resultset r, int pos,
     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,
+                                schema, 0);
+    return 0;
+}
+
 ZOOM_API(ZOOM_record)
     ZOOM_record_clone(ZOOM_record srec)
 {