X-Git-Url: http://sru.miketaylor.org.uk/?a=blobdiff_plain;f=include%2Fyaz%2B%2B%2Fyaz-z-server.h;h=4d4fb99e212ca05c3ec15fe96aeaaa44879c24fe;hb=19db153df3124f15689496768049bb73c3011a69;hp=cff95822d72b9ce136d1196fe580b89e4ed8ab7f;hpb=b710e2fb2be5819d54ed7626066ff214833a1d8d;p=yazpp-moved-to-github.git diff --git a/include/yaz++/yaz-z-server.h b/include/yaz++/yaz-z-server.h index cff9582..4d4fb99 100644 --- a/include/yaz++/yaz-z-server.h +++ b/include/yaz++/yaz-z-server.h @@ -2,13 +2,29 @@ * Copyright (c) 2000-2001, Index Data. * See the file LICENSE for details. * - * $Id: yaz-z-server.h,v 1.4 2001-04-02 13:39:34 adam Exp $ + * $Id: yaz-z-server.h,v 1.10 2001-05-17 14:18:03 adam Exp $ */ #include +#if HAVE_YAZ_URSULA_H +#include +#endif class Yaz_Z_Server; +class YAZ_EXPORT Yaz_Z_ServerUtility { + public: + void create_databaseRecord (ODR odr, Z_NamePlusRecord *rec, + const char *dbname, int format, + const void *buf, int len); + void create_surrogateDiagnostics(ODR odr, Z_NamePlusRecord *rec, + const char *dbname, int error, + char *const addinfo); + + Z_Records *create_nonSurrogateDiagnostics (ODR odr, int error, + const char *addinfo); +}; + class YAZ_EXPORT IYaz_Server_Facility { public: virtual int init(Yaz_Z_Server *server, @@ -18,33 +34,56 @@ class YAZ_EXPORT IYaz_Server_Facility { }; -class YAZ_EXPORT Yaz_Facility_ILL : public IYaz_Server_Facility { +#if HAVE_YAZ_URSULA_H +class YAZ_EXPORT Yaz_Facility_Ursula : public IYaz_Server_Facility { public: +// virtual void ursula_service (Z_ExtendedServicesRequest *req, +// Z_UrsPDU *u, +// Z_ExtendedServicesResponse *res) = 0; + virtual void ursula_service (Z_ExtendedServicesRequest *req, + Z_UrsPDU *u_req, + Z_ExtendedServicesResponse *res, + Z_UrsPDU *u_res) =0; + int init(Yaz_Z_Server *server, Z_InitRequest *initRequest, Z_InitResponse *initResponse); int recv(Yaz_Z_Server *server, Z_APDU *apdu); +}; +#endif - virtual int ill_init (Z_InitRequest *initRequest, - Z_InitResponse *initResponse) = 0; +class YAZ_EXPORT Yaz_Facility_ILL : public IYaz_Server_Facility { + public: + virtual void ill_service (Z_ExtendedServicesRequest *req, + Z_ItemOrder *io, + Z_ExtendedServicesResponse *res) = 0; - void create_databaseRecord (Z_NamePlusRecord *rec, - const char *dbname, int format, - const void *buf, int len); - void create_surrogateDiagnostics(Z_NamePlusRecord *rec, - const char *dbname, int error, - char *const addinfo); - virtual ODR odr_encode(); - private: - ODR m_odr; + int init(Yaz_Z_Server *server, + Z_InitRequest *initRequest, + Z_InitResponse *initResponse); + int recv(Yaz_Z_Server *server, Z_APDU *apdu); }; -class YAZ_EXPORT Yaz_Facility_Retrieval : public IYaz_Server_Facility { +class YAZ_EXPORT Yaz_Facility_Update : public IYaz_Server_Facility { public: + virtual void update_service (Z_ExtendedServicesRequest *req, + Z_IUUpdate *io, + Z_ExtendedServicesResponse *res) = 0; + + virtual void update_service0 (Z_ExtendedServicesRequest *req, + Z_IU0Update *io, + Z_ExtendedServicesResponse *res) = 0; + int init(Yaz_Z_Server *server, Z_InitRequest *initRequest, Z_InitResponse *initResponse); int recv(Yaz_Z_Server *server, Z_APDU *apdu); +}; + + +class YAZ_EXPORT Yaz_Facility_Retrieval : public IYaz_Server_Facility, + public Yaz_Z_ServerUtility { + public: virtual int sr_init (Z_InitRequest *initRequest, Z_InitResponse *initResponse) = 0; @@ -58,33 +97,31 @@ class YAZ_EXPORT Yaz_Facility_Retrieval : public IYaz_Server_Facility { Z_RecordComposition *comp, Z_NamePlusRecord *namePlusRecord, Z_Records *diagnostics) = 0; - void create_databaseRecord (Z_NamePlusRecord *rec, - const char *dbname, int format, - const void *buf, int len); - void create_surrogateDiagnostics(Z_NamePlusRecord *rec, - const char *dbname, int error, - char *const addinfo); - - Z_Records *create_nonSurrogateDiagnostics (int error, - const char *addinfo); - - - virtual ODR odr_encode(); + int init(Yaz_Z_Server *server, + Z_InitRequest *initRequest, + Z_InitResponse *initResponse); + int recv(Yaz_Z_Server *server, Z_APDU *apdu); + ODR odr_encode(); + ODR odr_decode(); private: - Z_Records *pack_records (const char *resultSetName, + Z_Records *pack_records (Yaz_Z_Server *s, + const char *resultSetName, int start, int num, Z_RecordComposition *comp, int *next, int *pres, int *oid); - void fetch_via_piggyback (Z_SearchRequest *searchRequest, + void fetch_via_piggyback (Yaz_Z_Server *s, + Z_SearchRequest *searchRequest, Z_SearchResponse *searchResponse); - void fetch_via_present (Z_PresentRequest *req, Z_PresentResponse *res); + void fetch_via_present (Yaz_Z_Server *s, + Z_PresentRequest *req, Z_PresentResponse *res); int m_preferredMessageSize; int m_maximumRecordSize; - ODR m_odr; + ODR m_odr_encode; + ODR m_odr_decode; }; class YAZ_EXPORT Yaz_Z_Server_Facility_Info { @@ -94,6 +131,8 @@ class YAZ_EXPORT Yaz_Z_Server_Facility_Info { Yaz_Z_Server_Facility_Info *m_next; }; + + class YAZ_EXPORT Yaz_Z_Server : public Yaz_Z_Assoc { public: Yaz_Z_Server(IYaz_PDU_Observable *the_PDU_Observable); @@ -101,6 +140,8 @@ public: virtual void recv_Z_PDU(Z_APDU *apdu); void facility_add(IYaz_Server_Facility *facility, const char *name); void facility_reset (); + + private: Yaz_Z_Server_Facility_Info *m_facilities; };