Changed the SRU update structures and codecs to reflect the SRU pre 1.0
[yaz-moved-to-github.git] / ztest / ztest.c
index c5f7432..77a600d 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (C) 1995-2005, Index Data ApS
  * See the file LICENSE for details.
  *
- * $Id: ztest.c,v 1.78 2006-03-13 12:14:00 adam Exp $
+ * $Id: ztest.c,v 1.83 2006-12-06 21:35:59 adam Exp $
  */
 
 /*
@@ -54,7 +54,17 @@ int ztest_search(void *handle, bend_search_rr *rr)
     else if(!yaz_matchstr (rr->basenames[0], "Slow"))
     {
 #if HAVE_UNISTD_H
-        sleep(3);
+        /* wait up to 3 seconds and check if connection is still alive */
+        int i;
+        for (i = 0; i<3; i++)
+        {
+            if (!bend_assoc_is_alive(rr->association))
+            {
+                yaz_log(YLOG_LOG, "search aborted");
+                break;
+            }
+            sleep(1);
+        }
 #endif
         ;
     }
@@ -149,9 +159,9 @@ int ztest_esrequest (void *handle, bend_esrequest_rr *rr)
                             if (!ill_ItemRequest (rr->decode, &item_req, 0, 0))
                             {
                                 yaz_log (log_level,
-                                    "Couldn't decode ItemRequest %s near %d",
+                                    "Couldn't decode ItemRequest %s near %ld",
                                        odr_errmsg(odr_geterror(rr->decode)),
-                                       odr_offset(rr->decode));
+                                       (long) odr_offset(rr->decode));
                             }
                             else
                                 yaz_log(log_level, "Decode ItemRequest OK");
@@ -172,9 +182,9 @@ int ztest_esrequest (void *handle, bend_esrequest_rr *rr)
                             if (!ill_APDU (rr->decode, &ill_apdu, 0, 0))
                             {
                                 yaz_log (log_level,
-                                    "Couldn't decode ILL APDU %s near %d",
+                                    "Couldn't decode ILL APDU %s near %ld",
                                        odr_errmsg(odr_geterror(rr->decode)),
-                                       odr_offset(rr->decode));
+                                       (long) odr_offset(rr->decode));
                                 yaz_log(log_level, "PDU dump:");
                                 odr_dumpBER(yaz_log_file(),
                                      (char *) r->u.single_ASN1_type->buf,
@@ -663,6 +673,12 @@ int ztest_explain(void *handle, bend_explain_rr *rr)
     return 0;
 }
 
+int ztest_update(void *handle, bend_update_rr *rr)
+{
+    rr->operation_status = "success";
+    return 0;
+}
+
 bend_initresult *bend_init(bend_initrequest *q)
 {
     bend_initresult *r = (bend_initresult *)
@@ -690,6 +706,7 @@ bend_initresult *bend_init(bend_initrequest *q)
     q->bend_explain = ztest_explain;
 #endif
     q->bend_srw_scan = ztest_scan;
+    q->bend_srw_update = ztest_update;
 
     return r;
 }