* Sebastian Hammer, Adam Dickmeiss
*
* $Log: client.c,v $
- * Revision 1.95 2000-02-28 11:20:05 adam
+ * Revision 1.104 2000-09-04 08:58:15 adam
+ * Added prefix yaz_ for most logging utility functions.
+ *
+ * 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.
+ *
+ * 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;
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)
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;
}
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)
(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;
}
{"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, ""},
+ {"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)
{
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);
}
}
wait = 0;
+ if (conn
#ifdef USE_SELECT
- if (conn && FD_ISSET(cs_fileno(conn), &input))
+ && FD_ISSET(cs_fileno(conn), &input)
#endif
+ )
{
do
{
}
}
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;
apdu_file=fopen(arg, "a");
break;
case 'v':
- log_init (log_mask_str(arg), "", NULL);
+ yaz_log_init (yaz_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);