2 * Copyright (c) 2000-2001, Index Data.
3 * See the file LICENSE for details.
5 * $Id: yaz-z-server.h,v 1.6 2001-04-04 14:02:49 adam Exp $
8 #include <yaz++/yaz-z-assoc.h>
9 #include <yaz/zes-ursula.h>
13 class YAZ_EXPORT Yaz_Z_ServerUtility {
15 void create_databaseRecord (ODR odr, Z_NamePlusRecord *rec,
16 const char *dbname, int format,
17 const void *buf, int len);
18 void create_surrogateDiagnostics(ODR odr, Z_NamePlusRecord *rec,
19 const char *dbname, int error,
22 Z_Records *create_nonSurrogateDiagnostics (ODR odr, int error,
26 class YAZ_EXPORT IYaz_Server_Facility {
28 virtual int init(Yaz_Z_Server *server,
29 Z_InitRequest *initRequest,
30 Z_InitResponse *initResponse) = 0;
31 virtual int recv(Yaz_Z_Server *server, Z_APDU *apdu) = 0;
35 class YAZ_EXPORT Yaz_Facility_Ursula : public IYaz_Server_Facility {
37 virtual void ursula_service (Z_ExtendedServicesRequest *req,
39 Z_ExtendedServicesResponse *res) = 0;
41 int init(Yaz_Z_Server *server,
42 Z_InitRequest *initRequest,
43 Z_InitResponse *initResponse);
44 int recv(Yaz_Z_Server *server, Z_APDU *apdu);
48 class YAZ_EXPORT Yaz_Facility_ILL : public IYaz_Server_Facility {
50 virtual int ill_init (Z_InitRequest *initRequest,
51 Z_InitResponse *initResponse) = 0;
53 virtual void ill_service (Z_ExtendedServicesRequest *req,
55 Z_ExtendedServicesResponse *res) = 0;
57 int init(Yaz_Z_Server *server,
58 Z_InitRequest *initRequest,
59 Z_InitResponse *initResponse);
60 int recv(Yaz_Z_Server *server, Z_APDU *apdu);
63 class YAZ_EXPORT Yaz_Facility_Retrieval : public IYaz_Server_Facility,
64 public Yaz_Z_ServerUtility {
67 virtual int sr_init (Z_InitRequest *initRequest,
68 Z_InitResponse *initResponse) = 0;
69 virtual void sr_search (Z_SearchRequest *searchRequest,
70 Z_SearchResponse *searchResponse) = 0;
71 virtual void sr_present (Z_PresentRequest *presentRequest,
72 Z_PresentResponse *presentResponse) = 0;
73 virtual void sr_record (const char *resultSetName,
76 Z_RecordComposition *comp,
77 Z_NamePlusRecord *namePlusRecord,
78 Z_Records *diagnostics) = 0;
79 int init(Yaz_Z_Server *server,
80 Z_InitRequest *initRequest,
81 Z_InitResponse *initResponse);
82 int recv(Yaz_Z_Server *server, Z_APDU *apdu);
87 Z_Records *pack_records (Yaz_Z_Server *s,
88 const char *resultSetName,
90 Z_RecordComposition *comp,
94 void fetch_via_piggyback (Yaz_Z_Server *s,
95 Z_SearchRequest *searchRequest,
96 Z_SearchResponse *searchResponse);
97 void fetch_via_present (Yaz_Z_Server *s,
98 Z_PresentRequest *req, Z_PresentResponse *res);
100 int m_preferredMessageSize;
101 int m_maximumRecordSize;
106 class YAZ_EXPORT Yaz_Z_Server_Facility_Info {
107 friend class Yaz_Z_Server;
108 IYaz_Server_Facility *m_facility;
110 Yaz_Z_Server_Facility_Info *m_next;
115 class YAZ_EXPORT Yaz_Z_Server : public Yaz_Z_Assoc {
117 Yaz_Z_Server(IYaz_PDU_Observable *the_PDU_Observable);
118 virtual ~Yaz_Z_Server();
119 virtual void recv_Z_PDU(Z_APDU *apdu);
120 void facility_add(IYaz_Server_Facility *facility, const char *name);
121 void facility_reset ();
125 Yaz_Z_Server_Facility_Info *m_facilities;
128 class YAZ_EXPORT Yaz_USMARC {
130 const char *get_record(int position);