X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fyaz-my-client.cpp;h=c655184bdbf66b232b1f3f184a1935d80929e247;hb=9a088f6097f4e6d48d6287e0067a5ff899633e6a;hp=c00c4b8a14432ee6e656365cf392d73c772a9771;hpb=50f38dcd58cdf62b3380710bdd7f23d6f88c555c;p=yazpp-moved-to-github.git diff --git a/src/yaz-my-client.cpp b/src/yaz-my-client.cpp index c00c4b8..c655184 100644 --- a/src/yaz-my-client.cpp +++ b/src/yaz-my-client.cpp @@ -3,7 +3,16 @@ * See the file LICENSE for details. * * $Log: yaz-my-client.cpp,v $ - * Revision 1.6 2001-04-17 16:21:21 heikki + * Revision 1.9 2001-04-26 17:51:56 heikki + * better ursula request (doesn't crash) + * + * Revision 1.8 2001/04/26 17:30:07 heikki + * Ursularequest got more default data + * + * Revision 1.7 2001/04/26 12:17:49 heikki + * Ursula stuff, mostly in the test client + * + * Revision 1.6 2001/04/17 16:21:21 heikki * Working on UrsulaRenewal, Request, and Update * * Revision 1.5 2001/04/10 10:48:08 adam @@ -126,6 +135,9 @@ public: const char *databaseName); void recv_textRecord(int type, const char *buf, size_t len); void recv_genericRecord(Z_GenericRecord *r); +#if HAVE_YAZ_URSULA_H + void recv_extendedServicesResponse(Z_ExtendedServicesResponse *extendedServicesResponse); +#endif void display_genericRecord(Z_GenericRecord *r, int level); void display_variant(Z_Variant *v, int level); void connectNotify(); @@ -146,6 +158,7 @@ public: int cmd_proxy(char *args); #if HAVE_YAZ_URSULA_H int cmd_ursula(char *args); + int cmd_ursula_renew(char *args); #endif }; @@ -517,6 +530,19 @@ void MyClient::recv_presentResponse(Z_PresentResponse *presentResponse) recv_records (presentResponse->records); } +#if HAVE_YAZ_URSULA_H +void MyClient::recv_extendedServicesResponse(Z_ExtendedServicesResponse *extendedServicesResponse) +{ + printf("Got ESresponse\n"); + printf(" OperationStatus=%d with %d diagnostics:\n", + *extendedServicesResponse->operationStatus, + extendedServicesResponse->num_diagnostics); + recv_diagrecs(extendedServicesResponse->diagnostics, + extendedServicesResponse->num_diagnostics); + //TODO: Add more info ! +} +#endif + int MyClient::wait() { set_lastReceived(0); @@ -528,6 +554,7 @@ int MyClient::wait() return 0; } + #define C_PROMPT "Z>" int MyClient::cmd_connect(char *host) @@ -618,13 +645,13 @@ int MyClient::cmd_proxy(char *args) } #if HAVE_YAZ_URSULA_H -#if TEST_URSULA_REF 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"); +// req->packageType = odr_getoidbystr(odr_encode(), "1.2.840.10003.9.1000.105.3"); Z_External *ext = (Z_External *) odr_malloc(odr_encode(), sizeof(*ext)); req->taskSpecificParameters = ext; @@ -634,30 +661,42 @@ int MyClient::cmd_ursula(char *args) ext->which = Z_External_octet; ext->u.single_ASN1_type = (Odr_oct *) - odr_malloc (odr_encode(), sizeof(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)); + 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->borrowerTickerNo = odr_strdup(odr_encode(),"1234567973"); pdu->u.request->disposalType = 0; - pdu->u.request->lastUseDate = 0; + pdu->u.request->lastUseDate = odr_strdup(odr_encode(),"20011224"); +#ifdef SKIPTHIS pdu->u.request->num_items = 0; pdu->u.request->items = (Z_UrsRequestItem **) odr_nullval(); - pdu->u.request->counter = 0; +#else + pdu->u.request->num_items = 1; + pdu->u.request->items = (Z_UrsRequestItem **) + odr_malloc(odr_encode(), 1 * sizeof(Z_UrsRequestItem*) ); + pdu->u.request->items[0] = (Z_UrsRequestItem*) + odr_malloc(odr_encode(), sizeof(Z_UrsRequestItem) ); + pdu->u.request->items[0]->id = odr_strdup(odr_encode(),"002231336x"); + pdu->u.request->items[0]->titlePartNo=odr_strdup(odr_encode(),"31"); +#endif + + pdu->u.request->counter = odr_strdup(odr_encode(),"HB"); pdu->u.request->priority = 0; pdu->u.request->disposalNote = 0; - pdu->u.request->overrule = 0; + pdu->u.request->overrule=(bool_t*)odr_malloc(odr_encode(),sizeof(bool_t)); + *pdu->u.request->overrule = false; if (!z_UrsPDU (odr_encode(), &pdu, 0, "")) { - yaz_log (LOG_LOG, "ursula encoding failed"); - return 1; + yaz_log (LOG_LOG, "ursula encoding failed"); + return 1; } char *buf = - odr_getbuf (odr_encode(), &ext->u.single_ASN1_type->len, 0); + 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); @@ -668,9 +707,8 @@ int MyClient::cmd_ursula(char *args) wait(); return 1; } -#else // not request testing -int MyClient::cmd_ursula(char *args) +int MyClient::cmd_ursula_renew(char *args) { Z_APDU *apdu = create_Z_PDU(Z_APDU_extendedServicesRequest); Z_ExtendedServicesRequest *req = apdu->u.extendedServicesRequest; @@ -685,14 +723,21 @@ int MyClient::cmd_ursula(char *args) ext->which = Z_External_octet; ext->u.single_ASN1_type = (Odr_oct *) - odr_malloc (odr_encode(), sizeof(Odr_oct)); + odr_malloc (odr_encode(), sizeof(Odr_oct)); Z_UrsPDU *pdu = (Z_UrsPDU *) odr_malloc (odr_encode(), sizeof(*pdu)); pdu->which = Z_UrsPDU_renewal; pdu->u.renewal = (Z_UrsRenewal *) odr_malloc (odr_encode(), sizeof(*pdu->u.renewal)); pdu->u.renewal->libraryNo = odr_strdup(odr_encode(), "000200"); - pdu->u.renewal->borrowerTicketNo = 0; + pdu->u.renewal->borrowerTicketNo = odr_strdup(odr_encode(),"1234567973"); + pdu->u.renewal->num_copies=1; + pdu->u.renewal->copies = (Z_InternationalString **) + odr_malloc(odr_encode(),1* sizeof(Z_InternationalString *) ); + pdu->u.renewal->copies[0]= odr_strdup(odr_encode(), "000035238"); + pdu->u.renewal->newReturnDate=odr_strdup(odr_encode(), "20011224"); + pdu->u.renewal->overrule=(bool_t*)odr_malloc(odr_encode(),sizeof(bool_t)); + *pdu->u.renewal->overrule=false; if (!z_UrsPDU (odr_encode(), &pdu, 0, "")) { @@ -712,7 +757,6 @@ int MyClient::cmd_ursula(char *args) return 1; } -#endif #endif @@ -738,6 +782,10 @@ int MyClient::processCommand(const char *commandLine) {"proxy", &MyClient::cmd_proxy, ":[':']"}, #if HAVE_YAZ_URSULA_H {"ursula", &MyClient::cmd_ursula, ""}, + {"ursula_request", &MyClient::cmd_ursula, ""}, + {"ursreq", &MyClient::cmd_ursula, ""}, + {"ursnew", &MyClient::cmd_ursula_renew, ""}, + {"ursula_renew", &MyClient::cmd_ursula_renew, ""}, #endif {0,0,0} };