2 * Copyright (c) 2000-2001, Index Data.
3 * See the file LICENSE for details.
5 * $Id: yaz-z-server.h,v 1.5 2001-04-03 14:37:19 adam Exp $
8 #include <yaz++/yaz-z-assoc.h>
12 class YAZ_EXPORT IYaz_Server_Facility {
14 virtual int init(Yaz_Z_Server *server,
15 Z_InitRequest *initRequest,
16 Z_InitResponse *initResponse) = 0;
17 virtual int recv(Yaz_Z_Server *server, Z_APDU *apdu) = 0;
21 class YAZ_EXPORT Yaz_Facility_ILL : public IYaz_Server_Facility {
23 virtual int ill_init (Z_InitRequest *initRequest,
24 Z_InitResponse *initResponse) = 0;
26 virtual void ill_service (Z_ExtendedServicesRequest *req,
27 Z_ItemOrder *io, Z_ExtendedServicesResponse *res) = 0;
29 int init(Yaz_Z_Server *server,
30 Z_InitRequest *initRequest,
31 Z_InitResponse *initResponse);
32 int recv(Yaz_Z_Server *server, Z_APDU *apdu);
35 void create_databaseRecord (Z_NamePlusRecord *rec,
36 const char *dbname, int format,
37 const void *buf, int len);
38 void create_surrogateDiagnostics(Z_NamePlusRecord *rec,
39 const char *dbname, int error,
41 virtual ODR odr_encode();
46 class YAZ_EXPORT Yaz_Facility_Retrieval : public IYaz_Server_Facility {
49 virtual int sr_init (Z_InitRequest *initRequest,
50 Z_InitResponse *initResponse) = 0;
51 virtual void sr_search (Z_SearchRequest *searchRequest,
52 Z_SearchResponse *searchResponse) = 0;
53 virtual void sr_present (Z_PresentRequest *presentRequest,
54 Z_PresentResponse *presentResponse) = 0;
55 virtual void sr_record (const char *resultSetName,
58 Z_RecordComposition *comp,
59 Z_NamePlusRecord *namePlusRecord,
60 Z_Records *diagnostics) = 0;
61 int init(Yaz_Z_Server *server,
62 Z_InitRequest *initRequest,
63 Z_InitResponse *initResponse);
64 int recv(Yaz_Z_Server *server, Z_APDU *apdu);
66 void create_databaseRecord (Z_NamePlusRecord *rec,
67 const char *dbname, int format,
68 const void *buf, int len);
69 void create_surrogateDiagnostics(Z_NamePlusRecord *rec,
70 const char *dbname, int error,
73 Z_Records *create_nonSurrogateDiagnostics (int error,
75 virtual ODR odr_encode();
77 Z_Records *pack_records (const char *resultSetName,
79 Z_RecordComposition *comp,
83 void fetch_via_piggyback (Z_SearchRequest *searchRequest,
84 Z_SearchResponse *searchResponse);
85 void fetch_via_present (Z_PresentRequest *req, Z_PresentResponse *res);
87 int m_preferredMessageSize;
88 int m_maximumRecordSize;
92 class YAZ_EXPORT Yaz_Z_Server_Facility_Info {
93 friend class Yaz_Z_Server;
94 IYaz_Server_Facility *m_facility;
96 Yaz_Z_Server_Facility_Info *m_next;
99 class YAZ_EXPORT Yaz_Z_Server : public Yaz_Z_Assoc {
101 Yaz_Z_Server(IYaz_PDU_Observable *the_PDU_Observable);
102 virtual ~Yaz_Z_Server();
103 virtual void recv_Z_PDU(Z_APDU *apdu);
104 void facility_add(IYaz_Server_Facility *facility, const char *name);
105 void facility_reset ();
107 Yaz_Z_Server_Facility_Info *m_facilities;
110 class YAZ_EXPORT Yaz_USMARC {
112 const char *get_record(int position);