Default timeout is 25 seconds
[yaz-moved-to-github.git] / zoom / zoomtst3.c
index f7fbbca..224db5f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * $Id: zoomtst3.c,v 1.4 2001-11-18 21:14:23 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>
 
@@ -15,6 +16,7 @@
 int main(int argc, char **argv)
 {
     int i;
+    int same_target = 0;
     int no = argc-2;
     ZOOM_connection z[500]; /* allow at most 500 connections */
     ZOOM_resultset r[500];  /* and result sets .. */
@@ -26,6 +28,12 @@ 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;
 
@@ -46,30 +54,37 @@ int main(int argc, char **argv)
        z[i] = ZOOM_connection_create (o);
 
        /* connect and init */
-       ZOOM_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] = ZOOM_connection_search_pqf (z[i], argv[argc-1]);
 
     /* network I/O. pass number of connections and array of connections */
-    while (ZOOM_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 = ZOOM_connection_error(z[i], &errmsg, &addinfo)))
-           fprintf (stderr, "%s error: %s (%d) %s\n", argv[i+1], errmsg,
+           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], ZOOM_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++)
            {
@@ -83,7 +98,7 @@ int main(int argc, char **argv)
                    printf ("%d\n", pos+1);
                    if (rec)
                        fwrite (rec, 1, len, stdout);
-                   putchar ('\n');
+                   printf ("\n");
                }
            }
        }