X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=src%2Fyaz-my-server.cpp;h=0ec90bd1e354e2b259682ea438117891988940bf;hb=c96f00d22f0af97ad7fd5d8687fa0b65b67de77e;hp=d9176b982c904f613ebbffa434c1bf188c028751;hpb=67260891a47e8b76c5a38b7f418e5daea31fbab7;p=yazpp-moved-to-github.git diff --git a/src/yaz-my-server.cpp b/src/yaz-my-server.cpp index d9176b9..0ec90bd 100644 --- a/src/yaz-my-server.cpp +++ b/src/yaz-my-server.cpp @@ -3,7 +3,24 @@ * See the file LICENSE for details. * * $Log: yaz-my-server.cpp,v $ - * Revision 1.2 2001-03-29 15:14:26 adam + * Revision 1.7 2001-08-13 16:39:12 adam + * PDU_Assoc keeps track of children. Using yaz_log instead of logf. + * + * Revision 1.6 2001/05/17 14:18:03 adam + * New handler for old version item update for server: + * void update_service0 (Z_ExtendedServicesRequest *req, + * Z_IU0Update *io, Z_ExtendedServicesResponse *res) + * + * Revision 1.5 2001/05/03 12:39:39 adam + * Added Update server service. + * + * Revision 1.4 2001/04/05 13:09:44 adam + * Removed ursula dependancy. + * + * Revision 1.3 2001/04/04 14:02:49 adam + * URSULA / Z-ruth service. + * + * Revision 1.2 2001/03/29 15:14:26 adam * Minor updates. * * Revision 1.1 2001/03/27 14:47:45 adam @@ -68,10 +85,22 @@ class MyILL : public Yaz_Facility_ILL { public: - int ill_init (Z_InitRequest *initRequest, - Z_InitResponse *initResponse); + void ill_service (Z_ExtendedServicesRequest *req, + Z_ItemOrder *io, + Z_ExtendedServicesResponse *res); }; +class MyUpdate : public Yaz_Facility_Update { +public: + void update_service (Z_ExtendedServicesRequest *req, + Z_IUUpdate *io, + Z_ExtendedServicesResponse *res); + void update_service0 (Z_ExtendedServicesRequest *req, + Z_IU0Update *io, + Z_ExtendedServicesResponse *res); +}; + + class MyRetrieval : public Yaz_Facility_Retrieval, Yaz_USMARC { public: int sr_init (Z_InitRequest *initRequest, @@ -88,6 +117,15 @@ public: 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(); @@ -99,18 +137,65 @@ public: void connectNotify(); private: - MyRetrieval *m_retrieval; - MyILL *m_ill; + MyRetrieval m_retrieval; + MyILL m_ill; + MyUpdate m_update; +#if HAVE_YAZ_URSULA_H + MyUrsula m_ursula; +#endif int m_no; }; -int MyILL::ill_init (Z_InitRequest *initRequest, - Z_InitResponse *initResponse) +void MyILL::ill_service (Z_ExtendedServicesRequest *req, + Z_ItemOrder *io, + Z_ExtendedServicesResponse *res) { - yaz_log (LOG_LOG, "MyILL::ill_init"); - return 1; + yaz_log (LOG_LOG, "MyServer::ill_service"); } +void MyUpdate::update_service (Z_ExtendedServicesRequest *req, + Z_IUUpdate *io, + Z_ExtendedServicesResponse *res) +{ + yaz_log (LOG_LOG, "MyServer::update_service (v1.1)"); +} + +void MyUpdate::update_service0 (Z_ExtendedServicesRequest *req, + Z_IU0Update *io, + Z_ExtendedServicesResponse *res) +{ + 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) { @@ -154,14 +239,12 @@ void MyRetrieval::sr_record (const char *resultSetName, { yaz_log (LOG_LOG, "MyServer::recv_Z_record"); const char *rec = get_record(position); - create_databaseRecord (namePlusRecord, 0, VAL_USMARC, rec, + create_databaseRecord (odr_encode(), namePlusRecord, 0, VAL_USMARC, rec, strlen(rec)); } MyServer::~MyServer() { - delete m_ill; - delete m_retrieval; } IYaz_PDU_Observer *MyServer::sessionNotify( @@ -171,10 +254,12 @@ IYaz_PDU_Observer *MyServer::sessionNotify( m_no++; new_server = new MyServer(the_PDU_Observable); new_server->timeout(900); - new_server->m_retrieval = new MyRetrieval; - new_server->m_ill = new MyILL; - 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_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()); @@ -185,8 +270,6 @@ MyServer::MyServer(IYaz_PDU_Observable *the_PDU_Observable) : Yaz_Z_Server (the_PDU_Observable) { m_no = 0; - m_ill = 0; - m_retrieval = 0; } void MyServer::timeoutNotify() @@ -205,7 +288,6 @@ void MyServer::connectNotify() { } - void usage(char *prog) { fprintf (stderr, "%s: [-a log] [-v level] [-T] @:port\n", prog);