X-Git-Url: http://git.indexdata.com/?p=yazpp-moved-to-github.git;a=blobdiff_plain;f=src%2Fyaz-my-client.cpp;h=359742568a2f36015708bbb3eac9b9d876863c85;hp=a25af4806ae8733eeaa6ebe2e3324074191e8ba9;hb=d3d51bee2100324025f7530d4e3ff3502397fd83;hpb=bd6d2417de1cb518dbc95a9808a9f46311dbc64c diff --git a/src/yaz-my-client.cpp b/src/yaz-my-client.cpp index a25af48..3597425 100644 --- a/src/yaz-my-client.cpp +++ b/src/yaz-my-client.cpp @@ -1,87 +1,17 @@ /* - * Copyright (c) 1998-2000, Index Data. + * Copyright (c) 1998-2003, Index Data. * See the file LICENSE for details. * - * $Log: yaz-my-client.cpp,v $ - * Revision 1.3 2001-04-05 13:09:44 adam - * Removed ursula dependancy. - * - * Revision 1.2 2001/04/04 14:02:49 adam - * URSULA / Z-ruth service. - * - * Revision 1.1 2001/03/27 14:47:45 adam - * New server facility scheme. - * - * Revision 1.17 2001/03/26 14:43:49 adam - * New threaded PDU association. - * - * Revision 1.16 2000/11/01 14:22:59 adam - * Added fd parameter for method IYaz_PDU_Observer::clone. - * - * Revision 1.15 2000/10/11 11:58:16 adam - * Moved header files to include/yaz++. Switched to libtool and automake. - * Configure script creates yaz++-config script. - * - * Revision 1.14 2000/09/08 10:23:42 adam - * Added skeleton of yaz-z-server. - * - * Revision 1.13 2000/09/06 14:23:45 adam - * WIN32 updates. - * - * Revision 1.12 2000/09/04 08:59:16 adam - * Changed call to logging functions (yaz_ added). - * - * Revision 1.11 2000/07/04 13:48:49 adam - * Implemented upper-limit on proxy-to-target sessions. - * - * Revision 1.10 2000/05/30 03:12:27 ian - * minor change to stop g++ 2.95.2 complaining about taking the address - * of a member function. - * - * Revision 1.9 1999/12/06 13:52:45 adam - * Modified for new location of YAZ header files. Experimental threaded - * operation. - * - * Revision 1.8 1999/11/10 10:02:34 adam - * Work on proxy. - * - * Revision 1.7 1999/04/21 12:09:01 adam - * Many improvements. Modified to proxy server to work with "sessions" - * based on cookies. - * - * Revision 1.6 1999/04/20 10:30:05 adam - * Implemented various stuff for client and proxy. Updated calls - * to ODR to reflect new name parameter. - * - * Revision 1.5 1999/04/09 11:46:57 adam - * Added object Yaz_Z_Assoc. Much more functional client. - * - * Revision 1.4 1999/03/23 14:17:57 adam - * More work on timeout handling. Work on yaz-client. - * - * Revision 1.3 1999/02/02 14:01:18 adam - * First WIN32 port of YAZ++. - * - * Revision 1.2 1999/01/28 13:08:42 adam - * Yaz_PDU_Assoc better encapsulated. Memory leak fix in - * yaz-socket-manager.cc. - * - * Revision 1.1.1.1 1999/01/28 09:41:07 adam - * First implementation of YAZ++. - * + * $Id: yaz-my-client.cpp,v 1.15 2004-01-05 11:31:04 adam Exp $ */ #include #include #include #include -#include -#include -#include - -#if HAVE_YAZ_URSULA_H -#include -#endif +#include +#include +#include extern "C" { #if HAVE_READLINE_READLINE_H @@ -135,9 +65,6 @@ public: int cmd_init(char *args); int cmd_format(char *args); int cmd_proxy(char *args); -#if HAVE_YAZ_URSULA_H - int cmd_ursula(char *args); -#endif }; @@ -421,7 +348,7 @@ void MyClient::recv_record(Z_DatabaseRecord *record, int offset, case VAL_SIGLEMARC: case VAL_ISDSMARC: case VAL_RUSMARC: - marc_display((char*) record->u.octet_aligned->buf,stdout); + marc_display((char*) record->u.octet_aligned->buf,0); break; default: recv_textRecord((int) ent->value, @@ -493,10 +420,12 @@ void MyClient::recv_searchResponse(Z_SearchResponse *searchResponse) if (!*searchResponse->searchStatus) { printf ("Fail\n"); - return; } - printf ("Ok\n"); - printf ("Hits: %d\n", *searchResponse->resultCount); + else + { + printf ("Ok\n"); + printf ("Hits: %d\n", *searchResponse->resultCount); + } recv_records (searchResponse->records); } @@ -517,6 +446,7 @@ int MyClient::wait() return 0; } + #define C_PROMPT "Z>" int MyClient::cmd_connect(char *host) @@ -524,7 +454,7 @@ int MyClient::cmd_connect(char *host) client (host); timeout (10); wait (); - timeout (0); + timeout (-1); return 1; } @@ -533,7 +463,7 @@ int MyClient::cmd_open(char *host) client (host); timeout (10); wait (); - timeout (0); + timeout (-1); send_initRequest(); wait (); return 1; @@ -606,67 +536,15 @@ int MyClient::cmd_proxy(char *args) return 1; } -#if HAVE_YAZ_URSULA_H -int MyClient::cmd_ursula(char *args) -{ - Z_APDU *apdu = create_Z_PDU(Z_APDU_extendedServicesRequest); - Z_ExtendedServicesRequest *req = apdu->u.extendedServicesRequest; - - req->packageType = odr_getoidbystr(odr_encode(), "1.2.840.10003"); - - Z_External *ext = (Z_External *) odr_malloc(odr_encode(), sizeof(*ext)); - req->taskSpecificParameters = ext; - ext->direct_reference = req->packageType; - ext->descriptor = 0; - ext->indirect_reference = 0; - - ext->which = Z_External_octet; - ext->u.single_ASN1_type = (Odr_oct *) - odr_malloc (odr_encode(), sizeof(Odr_oct)); - - Z_UrsPDU *pdu = (Z_UrsPDU *) odr_malloc (odr_encode(), sizeof(*pdu)); - pdu->which = Z_UrsPDU_request; - pdu->u.request = (Z_UrsRequest *) - odr_malloc (odr_encode(), sizeof(*pdu->u.request)); - pdu->u.request->libraryNo = odr_strdup(odr_encode(), "000200"); - pdu->u.request->borrowerTickerNo = 0; - pdu->u.request->disposalType = 0; - pdu->u.request->lastUseDate = 0; - pdu->u.request->num_items = 0; - pdu->u.request->items = (Z_UrsRequestItem **) odr_nullval(); - pdu->u.request->counter = 0; - pdu->u.request->priority = 0; - pdu->u.request->disposalNote = 0; - pdu->u.request->overrule = 0; - - if (!z_UrsPDU (odr_encode(), &pdu, 0, "")) - { - yaz_log (LOG_LOG, "ursula encoding failed"); - return 1; - } - char *buf = - odr_getbuf (odr_encode(), &ext->u.single_ASN1_type->len, 0); - - ext->u.single_ASN1_type->buf = (unsigned char*) - odr_malloc (odr_encode(), ext->u.single_ASN1_type->len); - memcpy (ext->u.single_ASN1_type->buf, buf, ext->u.single_ASN1_type->len); - ext->u.single_ASN1_type->size = ext->u.single_ASN1_type->len; - - if (send_Z_PDU(apdu) >= 0) - wait(); - return 1; -} -#endif - int MyClient::processCommand(const char *commandLine) { char cmdStr[1024], cmdArgs[1024]; cmdArgs[0] = '\0'; cmdStr[0] = '\0'; static struct { - char *cmd; + const char *cmd; int (MyClient::*fun)(char *arg); - char *ad; + const char *ad; } cmd[] = { {"open", &MyClient::cmd_open, "[':'][/]"}, {"connect", &MyClient::cmd_connect, "[':'][/]"}, @@ -678,9 +556,6 @@ int MyClient::processCommand(const char *commandLine) {"init", &MyClient::cmd_init, ""}, {"format", &MyClient::cmd_format, ""}, {"proxy", &MyClient::cmd_proxy, ":[':']"}, -#if HAVE_YAZ_URSULA_H - {"ursula", &MyClient::cmd_ursula, ""}, -#endif {0,0,0} }; @@ -801,7 +676,7 @@ int MyClient::args(Yaz_SocketManager *socketManager, int argc, char **argv) client (host); timeout (10); wait (); - timeout (0); + timeout (-1); send_initRequest(); wait (); }