SRW diagnostic code now a URI
[yaz-moved-to-github.git] / ztest / ztest.c
index 7241d5f..e7e815f 100644 (file)
@@ -1,8 +1,8 @@
 /*
- * Copyright (c) 1995-2002, Index Data.
+ * Copyright (c) 1995-2004, Index Data.
  * See the file LICENSE for details.
  *
- * $Id: ztest.c,v 1.53 2002-07-31 14:06:29 adam Exp $
+ * $Id: ztest.c,v 1.61 2004-01-27 12:15:12 adam Exp $
  */
 
 /*
@@ -13,9 +13,8 @@
 #include <stdlib.h>
 #include <ctype.h>
 
+#include <yaz/yaz-util.h>
 #include <yaz/backend.h>
-#include <yaz/log.h>
-
 #include <yaz/ill.h>
 
 Z_GenericRecord *dummy_grs_record (int num, ODR o);
@@ -35,7 +34,16 @@ int ztest_search (void *handle, bend_search_rr *rr)
         rr->errcode = 23;
         return 0;
     }
-    if (strcmp (rr->basenames[0], "Default"))
+#if NMEM_DEBUG
+    /* if database is stop, stop this process.. For debugging only. */
+    if (!yaz_matchstr (rr->basenames[0], "stop"))
+    {
+       nmem_print_list_l(LOG_LOG);
+        exit(0);
+    }
+#endif
+    /* Throw Database unavailable if other than Default */
+    if (yaz_matchstr (rr->basenames[0], "Default"))
     {
         rr->errcode = 109;
         rr->errstring = rr->basenames[0];
@@ -387,6 +395,10 @@ int ztest_esrequest (void *handle, bend_esrequest_rr *rr)
            }
        }
     }
+    else if (rr->esr->taskSpecificParameters->which == Z_External_update0)
+    {
+       yaz_log(LOG_LOG, "Received DB Update (version 0)");
+    }
     else
     {
         yaz_log (LOG_WARN, "Unknown Extended Service(%d)",
@@ -597,9 +609,24 @@ int ztest_scan(void *handle, bend_scan_rr *q)
     return 0;
 }
 
+static int ztest_explain(void *handle, bend_explain_rr *rr)
+{
+    if (rr->database && !strcmp(rr->database, "Default"))
+    {
+       rr->explain_buf = "<explain>\n"
+           "\t<serverInfo>\n"
+           "\t\t<host>localhost</host>\n"
+           "\t\t<port>210</port>\n"
+           "\t</serverInfo>\n"
+           "</explain>\n";
+    }
+    return 0;
+}
+
 bend_initresult *bend_init(bend_initrequest *q)
 {
-    bend_initresult *r = (bend_initresult *) odr_malloc (q->stream, sizeof(*r));
+    bend_initresult *r = (bend_initresult *)
+        odr_malloc (q->stream, sizeof(*r));
     int *counter = (int *) xmalloc (sizeof(int));
 
     *counter = 0;
@@ -613,6 +640,7 @@ bend_initresult *bend_init(bend_initrequest *q)
     q->bend_delete = ztest_delete;
     q->bend_fetch = ztest_fetch;
     q->bend_scan = ztest_scan;
+    q->bend_explain = ztest_explain;
     return r;
 }