2 * Copyright (c) 2000-2001, Index Data.
3 * See the file LICENSE for details.
5 * $Id: yaz-z-server.h,v 1.4 2001-04-02 13:39:34 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,
68 Z_Records *create_nonSurrogateDiagnostics (int error,
72 virtual ODR odr_encode();
75 Z_Records *pack_records (const char *resultSetName,
77 Z_RecordComposition *comp,
81 void fetch_via_piggyback (Z_SearchRequest *searchRequest,
82 Z_SearchResponse *searchResponse);
83 void fetch_via_present (Z_PresentRequest *req, Z_PresentResponse *res);
85 int m_preferredMessageSize;
86 int m_maximumRecordSize;
90 class YAZ_EXPORT Yaz_Z_Server_Facility_Info {
91 friend class Yaz_Z_Server;
92 IYaz_Server_Facility *m_facility;
94 Yaz_Z_Server_Facility_Info *m_next;
97 class YAZ_EXPORT Yaz_Z_Server : public Yaz_Z_Assoc {
99 Yaz_Z_Server(IYaz_PDU_Observable *the_PDU_Observable);
100 virtual ~Yaz_Z_Server();
101 virtual void recv_Z_PDU(Z_APDU *apdu);
102 void facility_add(IYaz_Server_Facility *facility, const char *name);
103 void facility_reset ();
105 Yaz_Z_Server_Facility_Info *m_facilities;
108 class YAZ_EXPORT Yaz_USMARC {
110 const char *get_record(int position);