2 * Copyright (c) 2000-2001, Index Data.
3 * See the file LICENSE for details.
5 * $Id: yaz-z-server.h,v 1.9 2001-05-03 12:39:39 adam Exp $
8 #include <yaz++/yaz-z-assoc.h>
10 #include <yaz/zes-ursula.h>
15 class YAZ_EXPORT Yaz_Z_ServerUtility {
17 void create_databaseRecord (ODR odr, Z_NamePlusRecord *rec,
18 const char *dbname, int format,
19 const void *buf, int len);
20 void create_surrogateDiagnostics(ODR odr, Z_NamePlusRecord *rec,
21 const char *dbname, int error,
24 Z_Records *create_nonSurrogateDiagnostics (ODR odr, int error,
28 class YAZ_EXPORT IYaz_Server_Facility {
30 virtual int init(Yaz_Z_Server *server,
31 Z_InitRequest *initRequest,
32 Z_InitResponse *initResponse) = 0;
33 virtual int recv(Yaz_Z_Server *server, Z_APDU *apdu) = 0;
38 class YAZ_EXPORT Yaz_Facility_Ursula : public IYaz_Server_Facility {
40 // virtual void ursula_service (Z_ExtendedServicesRequest *req,
42 // Z_ExtendedServicesResponse *res) = 0;
43 virtual void ursula_service (Z_ExtendedServicesRequest *req,
45 Z_ExtendedServicesResponse *res,
48 int init(Yaz_Z_Server *server,
49 Z_InitRequest *initRequest,
50 Z_InitResponse *initResponse);
51 int recv(Yaz_Z_Server *server, Z_APDU *apdu);
55 class YAZ_EXPORT Yaz_Facility_ILL : public IYaz_Server_Facility {
57 virtual void ill_service (Z_ExtendedServicesRequest *req,
59 Z_ExtendedServicesResponse *res) = 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);
67 class YAZ_EXPORT Yaz_Facility_Update : public IYaz_Server_Facility {
69 virtual void update_service (Z_ExtendedServicesRequest *req,
71 Z_ExtendedServicesResponse *res) = 0;
73 int init(Yaz_Z_Server *server,
74 Z_InitRequest *initRequest,
75 Z_InitResponse *initResponse);
76 int recv(Yaz_Z_Server *server, Z_APDU *apdu);
80 class YAZ_EXPORT Yaz_Facility_Retrieval : public IYaz_Server_Facility,
81 public Yaz_Z_ServerUtility {
84 virtual int sr_init (Z_InitRequest *initRequest,
85 Z_InitResponse *initResponse) = 0;
86 virtual void sr_search (Z_SearchRequest *searchRequest,
87 Z_SearchResponse *searchResponse) = 0;
88 virtual void sr_present (Z_PresentRequest *presentRequest,
89 Z_PresentResponse *presentResponse) = 0;
90 virtual void sr_record (const char *resultSetName,
93 Z_RecordComposition *comp,
94 Z_NamePlusRecord *namePlusRecord,
95 Z_Records *diagnostics) = 0;
96 int init(Yaz_Z_Server *server,
97 Z_InitRequest *initRequest,
98 Z_InitResponse *initResponse);
99 int recv(Yaz_Z_Server *server, Z_APDU *apdu);
104 Z_Records *pack_records (Yaz_Z_Server *s,
105 const char *resultSetName,
107 Z_RecordComposition *comp,
108 int *next, int *pres,
111 void fetch_via_piggyback (Yaz_Z_Server *s,
112 Z_SearchRequest *searchRequest,
113 Z_SearchResponse *searchResponse);
114 void fetch_via_present (Yaz_Z_Server *s,
115 Z_PresentRequest *req, Z_PresentResponse *res);
117 int m_preferredMessageSize;
118 int m_maximumRecordSize;
123 class YAZ_EXPORT Yaz_Z_Server_Facility_Info {
124 friend class Yaz_Z_Server;
125 IYaz_Server_Facility *m_facility;
127 Yaz_Z_Server_Facility_Info *m_next;
132 class YAZ_EXPORT Yaz_Z_Server : public Yaz_Z_Assoc {
134 Yaz_Z_Server(IYaz_PDU_Observable *the_PDU_Observable);
135 virtual ~Yaz_Z_Server();
136 virtual void recv_Z_PDU(Z_APDU *apdu);
137 void facility_add(IYaz_Server_Facility *facility, const char *name);
138 void facility_reset ();
142 Yaz_Z_Server_Facility_Info *m_facilities;
145 class YAZ_EXPORT Yaz_USMARC {
147 const char *get_record(int position);