X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=include%2Fyaz%2B%2B%2Fyaz-z-server.h;h=969a8f605c9f5f2e9117dd5a8a8b26bbbd240d7d;hb=5238ea544d4a2b414592f1d503f5ed83f305b21b;hp=1e606fabd758eec26e7ab7d8b39cb72daa649cd5;hpb=bd71f8812ca0f38438733efc89ecce1f49dae9e7;p=yazpp-moved-to-github.git diff --git a/include/yaz++/yaz-z-server.h b/include/yaz++/yaz-z-server.h index 1e606fa..969a8f6 100644 --- a/include/yaz++/yaz-z-server.h +++ b/include/yaz++/yaz-z-server.h @@ -2,66 +2,107 @@ * Copyright (c) 2000-2001, Index Data. * See the file LICENSE for details. * - * $Id: yaz-z-server.h,v 1.2 2001-03-26 14:43:49 adam Exp $ + * $Id: yaz-z-server.h,v 1.3 2001-03-27 14:47:45 adam Exp $ */ #include class Yaz_Z_Server; -class YAZ_EXPORT Yaz_I_Facility { +class YAZ_EXPORT IYaz_Server_Facility { public: - virtual const char *get_name(Yaz_Z_Server *server) = 0; - virtual int open(Yaz_Z_Server *server, + virtual int init(Yaz_Z_Server *server, Z_InitRequest *initRequest, Z_InitResponse *initResponse) = 0; - virtual int recv_PDU(Yaz_Z_Server *server, Z_APDU *apdu) = 0; - virtual int close(Yaz_Z_Server *server) = 0; + virtual int recv(Yaz_Z_Server *server, Z_APDU *apdu) = 0; }; -class YAZ_EXPORT Yaz_Facility_Retrieval : public Yaz_I_Facility { + +class YAZ_EXPORT Yaz_Facility_ILL : public IYaz_Server_Facility { public: - const char *get_name(Yaz_Z_Server *server); - int open(Yaz_Z_Server *server, + int init(Yaz_Z_Server *server, Z_InitRequest *initRequest, Z_InitResponse *initResponse); - int recv_PDU(Yaz_Z_Server *server, Z_APDU *apdu); - int close(Yaz_Z_Server *server); + int recv(Yaz_Z_Server *server, Z_APDU *apdu); + + virtual int ill_init (Z_InitRequest *initRequest, + Z_InitResponse *initResponse) = 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; }; -class YAZ_EXPORT Yaz_Z_Server : public Yaz_Z_Assoc { -public: - Yaz_Z_Server(IYaz_PDU_Observable *the_PDU_Observable); - virtual void recv_Z_PDU(Z_APDU *apdu); - virtual void recv_Z_init (Z_InitRequest *initRequest, - Z_InitResponse *initResponse) = 0; - virtual void recv_Z_search (Z_SearchRequest *searchRequest, - Z_SearchResponse *searchResponse) = 0; - virtual void recv_Z_present (Z_PresentRequest *presentRequest, - Z_PresentResponse *presentResponse) = 0; - virtual void recv_Z_record (const char *resultSetName, - int position, - int *format, +class YAZ_EXPORT Yaz_Facility_Retrieval : public IYaz_Server_Facility { + public: + int init(Yaz_Z_Server *server, + Z_InitRequest *initRequest, + Z_InitResponse *initResponse); + int recv(Yaz_Z_Server *server, Z_APDU *apdu); + + virtual int sr_init (Z_InitRequest *initRequest, + Z_InitResponse *initResponse) = 0; + virtual void sr_search (Z_SearchRequest *searchRequest, + Z_SearchResponse *searchResponse) = 0; + virtual void sr_present (Z_PresentRequest *presentRequest, + Z_PresentResponse *presentResponse) = 0; + virtual void sr_record (const char *resultSetName, + int position, + int *format, Z_RecordComposition *comp, Z_NamePlusRecord *namePlusRecord, Z_Records *diagnostics) = 0; - Z_Records *Yaz_Z_Server::create_nonSurrogateDiagnostics ( - int error, const char *addinfo); 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: Z_Records *pack_records (const char *resultSetName, int start, int num, Z_RecordComposition *comp, int *next, int *pres, int *oid); + + Z_Records *create_nonSurrogateDiagnostics (int error, + const char *addinfo); + void fetch_via_piggyback (Z_SearchRequest *searchRequest, Z_SearchResponse *searchResponse); void fetch_via_present (Z_PresentRequest *req, Z_PresentResponse *res); + int m_preferredMessageSize; int m_maximumRecordSize; + ODR m_odr; +}; + +class YAZ_EXPORT Yaz_Z_Server_Facility_Info { + friend class Yaz_Z_Server; + IYaz_Server_Facility *m_facility; + char *m_name; + 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); + virtual ~Yaz_Z_Server(); + 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; +}; + +class YAZ_EXPORT Yaz_USMARC { + public: + const char *get_record(int position); };