2 * Copyright (c) 2000-2001, Index Data.
3 * See the file LICENSE for details.
5 * $Id: yaz-z-server.h,v 1.3 2001-03-27 14:47:45 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 int init(Yaz_Z_Server *server,
24 Z_InitRequest *initRequest,
25 Z_InitResponse *initResponse);
26 int recv(Yaz_Z_Server *server, Z_APDU *apdu);
28 virtual int ill_init (Z_InitRequest *initRequest,
29 Z_InitResponse *initResponse) = 0;
31 void create_databaseRecord (Z_NamePlusRecord *rec,
32 const char *dbname, int format,
33 const void *buf, int len);
34 void create_surrogateDiagnostics(Z_NamePlusRecord *rec,
35 const char *dbname, int error,
37 virtual ODR odr_encode();
42 class YAZ_EXPORT Yaz_Facility_Retrieval : public IYaz_Server_Facility {
44 int init(Yaz_Z_Server *server,
45 Z_InitRequest *initRequest,
46 Z_InitResponse *initResponse);
47 int recv(Yaz_Z_Server *server, Z_APDU *apdu);
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 void create_databaseRecord (Z_NamePlusRecord *rec,
62 const char *dbname, int format,
63 const void *buf, int len);
64 void create_surrogateDiagnostics(Z_NamePlusRecord *rec,
65 const char *dbname, int error,
67 virtual ODR odr_encode();
69 Z_Records *pack_records (const char *resultSetName,
71 Z_RecordComposition *comp,
75 Z_Records *create_nonSurrogateDiagnostics (int error,
78 void fetch_via_piggyback (Z_SearchRequest *searchRequest,
79 Z_SearchResponse *searchResponse);
80 void fetch_via_present (Z_PresentRequest *req, Z_PresentResponse *res);
82 int m_preferredMessageSize;
83 int m_maximumRecordSize;
87 class YAZ_EXPORT Yaz_Z_Server_Facility_Info {
88 friend class Yaz_Z_Server;
89 IYaz_Server_Facility *m_facility;
91 Yaz_Z_Server_Facility_Info *m_next;
94 class YAZ_EXPORT Yaz_Z_Server : public Yaz_Z_Assoc {
96 Yaz_Z_Server(IYaz_PDU_Observable *the_PDU_Observable);
97 virtual ~Yaz_Z_Server();
98 virtual void recv_Z_PDU(Z_APDU *apdu);
99 void facility_add(IYaz_Server_Facility *facility, const char *name);
100 void facility_reset ();
102 Yaz_Z_Server_Facility_Info *m_facilities;
105 class YAZ_EXPORT Yaz_USMARC {
107 const char *get_record(int position);