A chapter about the yaz-client was added to the documentation.
[yaz-moved-to-github.git] / client / client.c
index 0e37a1f..03fbd7d 100644 (file)
@@ -4,7 +4,25 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: client.c,v $
- * Revision 1.97  2000-03-14 14:06:04  ian
+ * Revision 1.103  2000-08-10 08:41:26  adam
+ * Fixes for ILL.
+ *
+ * Revision 1.102  2000/05/18 11:57:04  adam
+ * Client display time elapsed.
+ *
+ * Revision 1.101  2000/04/05 07:39:54  adam
+ * Added shared library support (libtool).
+ *
+ * Revision 1.100  2000/03/20 19:29:59  adam
+ * Minor change.
+ *
+ * Revision 1.99  2000/03/20 19:06:25  adam
+ * Added Segment request for fronend server. Work on admin for client.
+ *
+ * Revision 1.98  2000/03/16 13:55:49  ian
+ * Added commands for sending shutdown and startup admin requests via the admin ES.
+ *
+ * Revision 1.97  2000/03/14 14:06:04  ian
  * Minor change to order of debugging output for send_apdu,
  * fixed encoding of admin request.
  *
@@ -360,9 +378,9 @@ static ODR out, in, print;              /* encoding and decoding streams */
 static FILE *apdu_file = 0;
 static COMSTACK conn = 0;               /* our z-association */
 static Z_IdAuthentication *auth = 0;    /* our current auth definition */
-static char *databaseNames[128];
+char *databaseNames[128];
+int num_databaseNames = 0;
 static Z_External *record_last = 0;
-static int num_databaseNames = 0;
 static int setnumber = 0;               /* current result set number */
 static int smallSetUpperBound = 0;
 static int largeSetLowerBound = 1;
@@ -1247,11 +1265,7 @@ void process_ESResponse(Z_ExtendedServicesResponse *res)
 
 const char *get_ill_element (void *clientData, const char *element)
 {
-    /* printf ("asking for %s\n", element); */
-    if (!strcmp (element, "ill,transaction-id,transaction-group-qualifier"))
-       return "1";
-    if (!strcmp (element, "ill,transaction-id,transaction-qualifier"))
-       return "1";
+    printf ("%s\n", element);
     return 0;
 }
 
@@ -1268,7 +1282,9 @@ static Z_External *create_external_itemRequest()
     ctl.f = get_ill_element;
 
     req = ill_get_ItemRequest(&ctl, "ill", 0);
-
+    if (!req)
+        printf ("ill_get_ItemRequest failed\n");
+       
     if (!ill_ItemRequest (out, &req, 0, 0))
     {
        if (apdu_file)
@@ -1425,21 +1441,20 @@ static Z_External *create_ItemOrderExternal(const char *type, int itemno)
        (int *) odr_malloc(out, sizeof(int));
     *r->u.itemOrder->u.esRequest->notToKeep->resultSetItem->item = itemno;
 
-    switch (*type)
+    if (!strcmp (type, "item") || !strcmp(type, "2"))
     {
-    case '2':
        printf ("using item-request\n");
        r->u.itemOrder->u.esRequest->notToKeep->itemRequest = 
            create_external_itemRequest();
-       break;
-    case '1':
+    }
+    else if (!strcmp(type, "ill") || !strcmp(type, "1"))
+    {
        printf ("using ILL-request\n");
        r->u.itemOrder->u.esRequest->notToKeep->itemRequest = 
            create_external_ILLRequest();
-       break;
-    default:
-       r->u.itemOrder->u.esRequest->notToKeep->itemRequest = 0;
     }
+    else
+       r->u.itemOrder->u.esRequest->notToKeep->itemRequest = 0;
     return r;
 }
 
@@ -2263,22 +2278,30 @@ static int client(int wait)
        {"attributeset", cmd_attributeset, "<attrset>"},
         {"querytype", cmd_querytype, "<type>"},
        {"refid", cmd_refid, "<id>"},
-       {"itemorder", cmd_itemorder, "1|2 <item>"},
+       {"itemorder", cmd_itemorder, "ill|item <itemno>"},
        {"update", cmd_update, "<item>"},
+#ifdef ASN_COMPILED
        /* Server Admin Functions */
        {"adm-reindex", cmd_adm_reindex, "<database-name>"},
        {"adm-truncate", cmd_adm_truncate, "('database'|'index')<object-name>"},
-       {"adm-create", cmd_adm_create, "<database-name>"},
-       {"adm-delete", cmd_adm_delete, "('database'|'index')<object-name>"},
-       {"adm-import", cmd_adm_import, "<database-name> <record-type> <source-file-name>"},
-       {"adm-refresh", cmd_adm_refresh, "<database-name>"},
+       {"adm-create", cmd_adm_create, ""},
+       {"adm-drop", cmd_adm_drop, "('database'|'index')<object-name>"},
+       {"adm-import", cmd_adm_import, "<record-type> <dir> <pattern>"},
+       {"adm-refresh", cmd_adm_refresh, ""},
        {"adm-commit", cmd_adm_commit, ""},
+       {"adm-shutdown", cmd_adm_shutdown, ""},
+       {"adm-startup", cmd_adm_startup, ""},
+#endif
         {0,0}
     };
     char *netbuffer= 0;
     int netbufferlen = 0;
     int i;
     Z_APDU *apdu;
+#if HAVE_GETTIMEOFDAY
+    struct timeval tv_start, tv_end;
+    gettimeofday (&tv_start, 0);
+#endif
 
     while (1)
     {
@@ -2325,6 +2348,10 @@ static int client(int wait)
            if ((end_p = strchr (line, '\n')))
                *end_p = '\0';
 #endif 
+#if HAVE_GETTIMEOFDAY
+           gettimeofday (&tv_start, 0);
+#endif
+
             if ((res = sscanf(line, "%s %[^;]", word, arg)) <= 0)
             {
                 strcpy(word, last_cmd);
@@ -2353,9 +2380,11 @@ static int client(int wait)
            }
         }
        wait = 0;
+       if (conn
 #ifdef USE_SELECT
-        if (conn && FD_ISSET(cs_fileno(conn), &input))
+           && FD_ISSET(cs_fileno(conn), &input)
 #endif
+           )
         {
             do
             {
@@ -2437,6 +2466,15 @@ static int client(int wait)
                 }
             }
             while (conn && cs_more(conn));
+#if HAVE_GETTIMEOFDAY
+           gettimeofday (&tv_end, 0);
+           if (1)
+           {
+               printf ("Elapsed: %.6f\n", (double) tv_end.tv_usec /
+                                                1e6 + tv_end.tv_sec -
+                  ((double) tv_start.tv_usec / 1e6 + tv_start.tv_sec));
+           }
+#endif
         }
     }
     return 0;
@@ -2478,7 +2516,7 @@ int main(int argc, char **argv)
            log_init (log_mask_str(arg), "", NULL);
            break;
         default:
-            fprintf (stderr, "Usage: %s [-m <marclog>] [ -m <apdulog>] "
+            fprintf (stderr, "Usage: %s [-m <marclog>] [ -a <apdulog>] "
                              "[<server-addr>]\n",
                      prog);
             exit (1);