* Copyright (c) 1998-2001, Index Data.
* See the file LICENSE for details.
*
- * $Id: yaz-my-client.cpp,v 1.11 2002-10-09 12:50:26 adam Exp $
+ * $Id: yaz-my-client.cpp,v 1.12 2002-10-28 12:16:09 adam Exp $
*/
#include <yaz/log.h>
#include <yaz++/pdu-assoc.h>
#include <yaz++/socket-manager.h>
-#if HAVE_YAZ_URSULA_H
-#include <yaz/zes-ursula.h>
-#endif
-
extern "C" {
#if HAVE_READLINE_READLINE_H
#include <readline/readline.h>
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();
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);
- int cmd_ursula_renew(char *args);
-#endif
};
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);
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");
-// 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;
- 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 = odr_strdup(odr_encode(),"1234567973");
- pdu->u.request->disposalType = 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();
-#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=(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;
- }
- 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;
-}
-
-int MyClient::cmd_ursula_renew(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 = 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, ""))
- {
- 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];
{"init", &MyClient::cmd_init, ""},
{"format", &MyClient::cmd_format, "<record-syntax>"},
{"proxy", &MyClient::cmd_proxy, "<host>:[':'<port>]"},
-#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}
};
* Copyright (c) 1998-2001, Index Data.
* See the file LICENSE for details.
*
- * $Id: yaz-my-server.cpp,v 1.10 2002-10-09 12:50:26 adam Exp $
+ * $Id: yaz-my-server.cpp,v 1.11 2002-10-28 12:16:09 adam Exp $
*/
#include <yaz/log.h>
Z_Records *records);
};
-#if HAVE_YAZ_URSULA_H
-class MyUrsula : public Yaz_Facility_Ursula {
-public:
- void ursula_service (Z_ExtendedServicesRequest *req,
- Z_UrsPDU *u,
- Z_ExtendedServicesResponse *res);
-};
-#endif
-
class MyServer : public Yaz_Z_Server {
public:
~MyServer();
MyRetrieval m_retrieval;
MyILL m_ill;
MyUpdate m_update;
-#if HAVE_YAZ_URSULA_H
- MyUrsula m_ursula;
-#endif
int m_no;
};
yaz_log (LOG_LOG, "MyServer::update_service (v1.0)");
}
-#if HAVE_YAZ_URSULA_H
-void MyUrsula::ursula_service (Z_ExtendedServicesRequest *req,
- Z_UrsPDU *u,
- Z_ExtendedServicesResponse *res)
-{
- yaz_log (LOG_LOG, "MyServer::ursula_service");
- switch (u->which)
- {
- case Z_UrsPDU_request:
- yaz_log(LOG_LOG, "request");
- if (u->u.request->libraryNo)
- yaz_log (LOG_LOG, "libraryNo: %s", u->u.request->libraryNo);
- break;
- case Z_UrsPDU_update:
- yaz_log(LOG_LOG, "request");
- break;
- case Z_UrsPDU_reservation:
- yaz_log(LOG_LOG, "request");
- break;
- case Z_UrsPDU_renewal:
- yaz_log(LOG_LOG, "request");
- break;
- default:
- yaz_log(LOG_LOG, "unknown");
- break;
- }
-}
-#endif
-
int MyRetrieval::sr_init (Z_InitRequest *initRequest,
Z_InitResponse *initResponse)
{
new_server->facility_add(&new_server->m_retrieval, "my sr");
new_server->facility_add(&new_server->m_ill, "my ill");
new_server->facility_add(&new_server->m_update, "my update");
-#if HAVE_YAZ_URSULA_H
- new_server->facility_add(&new_server->m_ursula, "my ursula");
-#endif
-
new_server->set_APDU_log(get_APDU_log());
return new_server;
+++ /dev/null
-/*
- * Copyright (c) 2001, Index Data.
- * See the file LICENSE for details.
- *
- * $Id: yaz-z-server-ursula.cpp,v 1.7 2002-10-23 21:24:19 adam Exp $
- */
-
-#include <yaz/log.h>
-#include <yaz++/z-server.h>
-
-#if HAVE_YAZ_URSULA_H
-int Yaz_Facility_Ursula::init(Yaz_Z_Server *s, Z_InitRequest *initRequest,
- Z_InitResponse *initResponse)
-{
- Z_Options *req = initRequest->options;
- Z_Options *res = initResponse->options;
-
- if (ODR_MASK_GET(req, Z_Options_extendedServices))
- ODR_MASK_SET(res, Z_Options_extendedServices);
- return 1;
-}
-
-int Yaz_Facility_Ursula::recv(Yaz_Z_Server *s, Z_APDU *apdu_request)
-{
- Z_APDU *apdu_response;
-
- if (apdu_request->which != Z_APDU_extendedServicesRequest)
- return 0;
- Z_ExtendedServicesRequest *req = apdu_request->u.extendedServicesRequest;
-
- Z_External *r = req->taskSpecificParameters;
-
- if (!r)
- return 0;
-
- if (r->which != ODR_EXTERNAL_octet)
- {
- yaz_log (LOG_LOG, "ursula::recv not octet alighed");
- return 0;
- }
- odr_setbuf (s->odr_decode(), (char*) r->u.octet_aligned->buf,
- r->u.octet_aligned->len, 0);
- Z_UrsPDU *pdu = 0;
- if (!z_UrsPDU (s->odr_decode(), &pdu, 0, ""))
- {
- yaz_log (LOG_LOG, "ursula::decode failed");
- return 0;
- }
- yaz_log (LOG_LOG, "got ursula packet");
- apdu_response = s->create_Z_PDU(Z_APDU_extendedServicesResponse);
- ursula_service(req, pdu, apdu_response->u.extendedServicesResponse, NULL);
- // FIXME: Initialize the response pdu... ADAM!!!
- s->transfer_referenceId(apdu_request, apdu_response);
- s->send_Z_PDU(apdu_response);
- return 1;
-}
-#endif