Added Segment request for fronend server. Work on admin for client.
[yaz-moved-to-github.git] / client / client.c
index 91c0740..2dae9b3 100644 (file)
@@ -4,7 +4,20 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: client.c,v $
- * Revision 1.95  2000-02-28 11:20:05  adam
+ * 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.
+ *
+ * Revision 1.96  2000/03/14 09:27:07  ian
+ * Added code to enable sending of admin extended service requests
+ *
+ * Revision 1.95  2000/02/28 11:20:05  adam
  * Using autoconf. New definitions: YAZ_BEGIN_CDECL/YAZ_END_CDECL.
  *
  * Revision 1.94  2000/01/31 13:15:21  adam
 #include <readline/history.h>
 #endif
 
+#include "admin.h"
+
 #define C_PROMPT "Z> "
 
 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;
@@ -383,21 +398,26 @@ static QueryType queryType = QueryType_Prefix;
 static CCL_bibset bibset;               /* CCL bibset handle */
 #endif
 
-static void send_apdu(Z_APDU *a)
+ODR getODROutputStream()
+{
+    return out;
+}
+
+void send_apdu(Z_APDU *a)
 {
     char *buf;
     int len;
 
-    if (!z_APDU(out, &a, 0, 0))
-    {
-        odr_perror(out, "Encoding APDU");
-        exit(1);
-    }
     if (apdu_file)
     {
         z_APDU(print, &a, 0, 0);
         odr_reset(print);
     }
+    if (!z_APDU(out, &a, 0, 0))
+    {
+        odr_perror(out, "Encoding APDU");
+        exit(1);
+    }
     buf = odr_getbuf(out, &len, 0);
     /* printf ("sending APDU of size %d\n", len); */
     if (cs_put(conn, buf, len) < 0)
@@ -2251,6 +2271,16 @@ static int client(int wait)
        {"refid", cmd_refid, "<id>"},
        {"itemorder", cmd_itemorder, "1|2 <item>"},
        {"update", cmd_update, "<item>"},
+       /* 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-commit", cmd_adm_commit, ""},
+       {"adm-shutdown", cmd_adm_shutdown, ""},
+       {"adm-startup", cmd_adm_startup, ""},
         {0,0}
     };
     char *netbuffer= 0;
@@ -2331,9 +2361,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
             {