2 * Copyright (c) 2000-2007, Index Data.
3 * See the file LICENSE for details.
5 * $Id: z-server.h,v 1.4 2007-05-08 12:04:50 adam Exp $
8 #include <yazpp/z-assoc.h>
14 class YAZ_EXPORT Z_ServerUtility {
16 void create_databaseRecord (ODR odr, Z_NamePlusRecord *rec,
17 const char *dbname, const Odr_oid *format,
18 const void *buf, int len);
19 void create_surrogateDiagnostics(ODR odr, Z_NamePlusRecord *rec,
20 const char *dbname, int error,
23 Z_Records *create_nonSurrogateDiagnostics (ODR odr, int error,
26 void create_diagnostics (
27 ODR odr, int error, const char *addinfo,
28 Z_DiagRec ***dreca, int *num);
30 virtual ~Z_ServerUtility() = 0;
33 class YAZ_EXPORT IServer_Facility {
35 virtual int init(Z_Server *server,
36 Z_InitRequest *initRequest,
37 Z_InitResponse *initResponse) = 0;
38 virtual int recv(Z_Server *server, Z_APDU *apdu) = 0;
40 virtual ~IServer_Facility() = 0;
43 class YAZ_EXPORT Yaz_Facility_ILL : public IServer_Facility {
45 virtual void ill_service (Z_ExtendedServicesRequest *req,
47 Z_ExtendedServicesResponse *res) = 0;
49 int init(Z_Server *server,
50 Z_InitRequest *initRequest,
51 Z_InitResponse *initResponse);
52 int recv(Z_Server *server, Z_APDU *apdu);
55 class YAZ_EXPORT Yaz_Facility_Update : public IServer_Facility {
57 virtual void update_service (Z_ExtendedServicesRequest *req,
59 Z_ExtendedServicesResponse *res) = 0;
61 virtual void update_service0 (Z_ExtendedServicesRequest *req,
63 Z_ExtendedServicesResponse *res) = 0;
65 int init(Z_Server *server,
66 Z_InitRequest *initRequest,
67 Z_InitResponse *initResponse);
68 int recv(Z_Server *server, Z_APDU *apdu);
72 class YAZ_EXPORT Yaz_Facility_Retrieval : public IServer_Facility,
73 public Z_ServerUtility {
76 virtual int sr_init (Z_InitRequest *initRequest,
77 Z_InitResponse *initResponse) = 0;
78 virtual void sr_search (Z_SearchRequest *searchRequest,
79 Z_SearchResponse *searchResponse) = 0;
80 virtual void sr_present (Z_PresentRequest *presentRequest,
81 Z_PresentResponse *presentResponse) = 0;
82 virtual void sr_record (const char *resultSetName,
85 Z_RecordComposition *comp,
86 Z_NamePlusRecord *namePlusRecord,
87 Z_Records *diagnostics) = 0;
88 int init(Z_Server *server,
89 Z_InitRequest *initRequest,
90 Z_InitResponse *initResponse);
91 int recv(Z_Server *server, Z_APDU *apdu);
96 Z_Records *pack_records (Z_Server *s,
97 const char *resultSetName,
99 Z_RecordComposition *comp,
100 int *next, int *pres,
103 void fetch_via_piggyback (Z_Server *s,
104 Z_SearchRequest *searchRequest,
105 Z_SearchResponse *searchResponse);
106 void fetch_via_present (Z_Server *s,
107 Z_PresentRequest *req, Z_PresentResponse *res);
109 int m_preferredMessageSize;
110 int m_maximumRecordSize;
115 class YAZ_EXPORT Z_Server_Facility_Info {
116 friend class Z_Server;
117 IServer_Facility *m_facility;
119 Z_Server_Facility_Info *m_next;
124 class YAZ_EXPORT Z_Server : public Z_Assoc {
126 Z_Server(IPDU_Observable *the_PDU_Observable);
128 void recv_Z_PDU(Z_APDU *apdu, int len);
129 virtual void recv_GDU(Z_GDU *apdu, int len);
130 void facility_add(IServer_Facility *facility, const char *name);
131 void facility_reset ();
135 Z_Server_Facility_Info *m_facilities;
138 class YAZ_EXPORT Yaz_USMARC {
140 const char *get_record(size_t position);
146 * indent-tabs-mode: nil
148 * vim: shiftwidth=4 tabstop=8 expandtab