X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fyaz-my-client.cpp;h=c00c4b8a14432ee6e656365cf392d73c772a9771;hb=50f38dcd58cdf62b3380710bdd7f23d6f88c555c;hp=48e0aadcbfc5df3fbd51adc1cb839d6e501ecf96;hpb=71130e9f57a28722e39b6c8cf9700b9e42fe9d7c;p=yazpp-moved-to-github.git diff --git a/src/yaz-my-client.cpp b/src/yaz-my-client.cpp index 48e0aad..c00c4b8 100644 --- a/src/yaz-my-client.cpp +++ b/src/yaz-my-client.cpp @@ -3,7 +3,13 @@ * See the file LICENSE for details. * * $Log: yaz-my-client.cpp,v $ - * Revision 1.4 2001-04-05 15:12:24 adam + * 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 + * Fixed problem where proxy could cash bad result sets. + * + * Revision 1.4 2001/04/05 15:12:24 adam * WIN32 updates. * * Revision 1.3 2001/04/05 13:09:44 adam @@ -496,10 +502,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); } @@ -610,6 +618,7 @@ 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); @@ -659,6 +668,52 @@ int MyClient::cmd_ursula(char *args) wait(); return 1; } +#else // not request testing + +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_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; + + 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 + #endif int MyClient::processCommand(const char *commandLine)