2 * Copyright (c) 2000-2001, Index Data.
3 * See the file LICENSE for details.
5 * $Id: yaz-z-server.h,v 1.10 2001-05-17 14:18:03 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 virtual void update_service0 (Z_ExtendedServicesRequest *req,
75 Z_ExtendedServicesResponse *res) = 0;
77 int init(Yaz_Z_Server *server,
78 Z_InitRequest *initRequest,
79 Z_InitResponse *initResponse);
80 int recv(Yaz_Z_Server *server, Z_APDU *apdu);
84 class YAZ_EXPORT Yaz_Facility_Retrieval : public IYaz_Server_Facility,
85 public Yaz_Z_ServerUtility {
88 virtual int sr_init (Z_InitRequest *initRequest,
89 Z_InitResponse *initResponse) = 0;
90 virtual void sr_search (Z_SearchRequest *searchRequest,
91 Z_SearchResponse *searchResponse) = 0;
92 virtual void sr_present (Z_PresentRequest *presentRequest,
93 Z_PresentResponse *presentResponse) = 0;
94 virtual void sr_record (const char *resultSetName,
97 Z_RecordComposition *comp,
98 Z_NamePlusRecord *namePlusRecord,
99 Z_Records *diagnostics) = 0;
100 int init(Yaz_Z_Server *server,
101 Z_InitRequest *initRequest,
102 Z_InitResponse *initResponse);
103 int recv(Yaz_Z_Server *server, Z_APDU *apdu);
108 Z_Records *pack_records (Yaz_Z_Server *s,
109 const char *resultSetName,
111 Z_RecordComposition *comp,
112 int *next, int *pres,
115 void fetch_via_piggyback (Yaz_Z_Server *s,
116 Z_SearchRequest *searchRequest,
117 Z_SearchResponse *searchResponse);
118 void fetch_via_present (Yaz_Z_Server *s,
119 Z_PresentRequest *req, Z_PresentResponse *res);
121 int m_preferredMessageSize;
122 int m_maximumRecordSize;
127 class YAZ_EXPORT Yaz_Z_Server_Facility_Info {
128 friend class Yaz_Z_Server;
129 IYaz_Server_Facility *m_facility;
131 Yaz_Z_Server_Facility_Info *m_next;
136 class YAZ_EXPORT Yaz_Z_Server : public Yaz_Z_Assoc {
138 Yaz_Z_Server(IYaz_PDU_Observable *the_PDU_Observable);
139 virtual ~Yaz_Z_Server();
140 virtual void recv_Z_PDU(Z_APDU *apdu);
141 void facility_add(IYaz_Server_Facility *facility, const char *name);
142 void facility_reset ();
146 Yaz_Z_Server_Facility_Info *m_facilities;
149 class YAZ_EXPORT Yaz_USMARC {
151 const char *get_record(int position);