Default timeout is 25 seconds
[yaz-moved-to-github.git] / zoom / zoomtst3.c
index b52d1d1..224db5f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: zoomtst3.c,v 1.2 2001-10-24 12:24:43 adam Exp $
+ * $Id: zoomtst3.c,v 1.8 2002-06-05 21:09:04 adam Exp $
  *
  * Asynchronous multi-target client doing search and piggyback retrieval
  */
@@ -7,6 +7,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <ctype.h>
 
 #include <yaz/xmalloc.h>
 
 int main(int argc, char **argv)
 {
     int i;
+    int same_target = 0;
     int no = argc-2;
-    Z3950_connection z[500]; /* allow at most 500 connections */
-    Z3950_resultset r[500];  /* and result sets .. */
-    Z3950_options o = Z3950_options_create ();
+    ZOOM_connection z[500]; /* allow at most 500 connections */
+    ZOOM_resultset r[500];  /* and result sets .. */
+    ZOOM_options o = ZOOM_options_create ();
 
     if (argc < 3)
     {
@@ -26,63 +28,77 @@ int main(int argc, char **argv)
                 *argv);
        exit (1);
     }
+    if (argc == 4 && isdigit(argv[1][0]) && !strchr(argv[1],'.'))
+    {
+       no = atoi(argv[1]);
+       same_target = 1;
+    }
+
     if (no > 500)
         no = 500;
 
     /* async mode */
-    Z3950_options_set (o, "async", "1");
+    ZOOM_options_set (o, "async", "1");
 
     /* get first 10 records of result set (using piggyback) */
-    Z3950_options_set (o, "count", "10");
+    ZOOM_options_set (o, "count", "10");
 
     /* preferred record syntax */
-    Z3950_options_set (o, "preferredRecordSyntax", "usmarc");
-    Z3950_options_set (o, "elementSetName", "F");
+    ZOOM_options_set (o, "preferredRecordSyntax", "usmarc");
+    ZOOM_options_set (o, "elementSetName", "F");
 
     /* connect to all */
     for (i = 0; i<no; i++)
     {
        /* create connection - pass options (they are the same for all) */
-       z[i] = Z3950_connection_create (o);
+       z[i] = ZOOM_connection_create (o);
 
        /* connect and init */
-       Z3950_connection_connect (z[i], argv[1+i], 0);
+       if (same_target)
+           ZOOM_connection_connect (z[i], argv[2], 0);
+       else
+           ZOOM_connection_connect (z[i], argv[1+i], 0);
     }
     /* search all */
     for (i = 0; i<no; i++)
-        r[i] = Z3950_connection_search_pqf (z[i], argv[argc-1]);
+        r[i] = ZOOM_connection_search_pqf (z[i], argv[argc-1]);
 
     /* network I/O. pass number of connections and array of connections */
-    while (Z3950_event (no, z))
-       ;
+    while ((i = ZOOM_event (no, z)))
+    {
+        printf ("no = %d event = %d\n", i-1,
+                ZOOM_connection_last_event(z[i-1]));
+    }
     
     /* no more to be done. Inspect results */
     for (i = 0; i<no; i++)
     {
        int error;
        const char *errmsg, *addinfo;
+       const char *tname = (same_target ? argv[2] : argv[1+i]);
        /* display errors if any */
-       if ((error = Z3950_connection_error(z[i], &errmsg, &addinfo)))
-           fprintf (stderr, "%s error: %s (%d) %s\n", argv[i+1], errmsg,
+       if ((error = ZOOM_connection_error(z[i], &errmsg, &addinfo)))
+           fprintf (stderr, "%s error: %s (%d) %s\n", tname, errmsg,
                     error, addinfo);
        else
        {
            /* OK, no major errors. Look at the result count */
            int pos;
-           printf ("%s: %d hits\n", argv[i+1], Z3950_resultset_size(r[i]));
+           printf ("%s: %d hits\n", tname, ZOOM_resultset_size(r[i]));
            /* go through all records at target */
            for (pos = 0; pos < 10; pos++)
            {
                int len; /* length of buffer rec */
                const char *rec =
-                   Z3950_resultset_get (r[i], pos, "render", &len);
+                   ZOOM_record_get (
+                        ZOOM_resultset_record (r[i], pos), "render", &len);
                /* if rec is non-null, we got a record for display */
                if (rec)
                {
                    printf ("%d\n", pos+1);
                    if (rec)
                        fwrite (rec, 1, len, stdout);
-                   putchar ('\n');
+                   printf ("\n");
                }
            }
        }
@@ -90,9 +106,9 @@ int main(int argc, char **argv)
     /* destroy and exit */
     for (i = 0; i<no; i++)
     {
-        Z3950_resultset_destroy (r[i]);
-        Z3950_connection_destroy (z[i]);
+        ZOOM_resultset_destroy (r[i]);
+        ZOOM_connection_destroy (z[i]);
     }
-    Z3950_options_destroy(o);
+    ZOOM_options_destroy(o);
     exit (0);
 }