Added pure virtual destructors for interface-like classes.
[yazpp-moved-to-github.git] / zlint / zlint.h
1 /*
2  * Copyright (c) 2004-2005, Index Data.
3  * See the file LICENSE for details.
4  * 
5  * $Id: zlint.h,v 1.5 2005-09-22 12:40:45 adam Exp $
6  */
7
8 #include <yaz++/z-assoc.h>
9
10 using namespace yazpp_1;
11
12 enum Zlint_code {
13     TEST_FINISHED,
14     TEST_CONTINUE,
15     TEST_REOPEN,
16 };
17
18 class Zlint_test;
19 class Zlint_t;
20
21 class Zlint : public Z_Assoc {
22 public:
23     Zlint(IPDU_Observable *the_PDU_Observable);
24     ~Zlint();
25     void add_test(Zlint_test *i);
26     void set_host(const char *cp);
27     int initResponseGetVersion(Z_InitResponse *init);
28     Z_ReferenceId *mk_refid(const char *buf, int len);
29     void msg_check_for(const char *fmt, ...);
30     void msg_check_ok();
31     void msg_check_fail(const char *fmt, ...);
32     void msg_check_info(const char *fmt, ...);
33     void msg_check_notapp();
34     void getDatabase(char ***db, int *num);
35 private:
36     void connectNotify();
37     void timeoutNotify();
38     void failNotify();
39     void recv_GDU(Z_GDU *apdu, int len);
40     IPDU_Observable *m_PDU_Observable;
41     IPDU_Observer *sessionNotify(IPDU_Observable *the_PDU_Observable, int fd);
42     Zlint_t *m_tests;
43     Zlint_t *m_cur_test;
44     char *m_host;
45     char *m_database;
46     void close_goto_next();
47 };
48
49 class Zlint_test {
50 public:
51     virtual Zlint_code init(Zlint *z) = 0;
52     virtual Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu) = 0;
53     virtual Zlint_code recv_fail(Zlint *z, int reason) = 0;
54     virtual ~Zlint_test() = 0;
55 };
56
57 class Zlint_test_simple : public Zlint_test {
58 public:
59     virtual Zlint_code init(Zlint *z) = 0;
60     virtual Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu) = 0;
61     virtual Zlint_code recv_fail(Zlint *z, int reason);
62 };
63
64 class Zlint_test_init_01 : public Zlint_test_simple {
65 public:
66     Zlint_test_init_01();
67     virtual ~Zlint_test_init_01();
68     Zlint_code init(Zlint *z);
69     Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu);
70 };
71
72 class Zlint_test_init_02 : public Zlint_test_simple {
73 public:
74     Zlint_test_init_02();
75     virtual ~Zlint_test_init_02();
76     Zlint_code init(Zlint *z);
77     Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu);
78 };
79
80 class Zlint_test_init_03 : public Zlint_test_simple {
81 public:
82     Zlint_test_init_03();
83     virtual ~Zlint_test_init_03();
84     Zlint_code init(Zlint *z);
85     Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu);
86 };
87
88 class Zlint_test_init_04 : public Zlint_test_simple {
89 public:
90     Zlint_test_init_04();
91     virtual ~Zlint_test_init_04();
92     Zlint_code init(Zlint *z);
93     Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu);
94 };
95
96 class Zlint_test_init_05 : public Zlint_test_simple {
97     int m_init_response_no;
98 public:
99     Zlint_test_init_05();
100     virtual ~Zlint_test_init_05();
101     Zlint_code init(Zlint *z);
102     Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu);
103 };
104
105 class Zlint_test_init_06 : public Zlint_test_simple {
106 public:
107     Zlint_test_init_06();
108     virtual ~Zlint_test_init_06();
109     Zlint_code init(Zlint *z);
110     Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu);
111 };
112
113 class Zlint_test_init_07 : public Zlint_test_simple {
114 public:
115     Zlint_test_init_07();
116     virtual ~Zlint_test_init_07();
117     Zlint_code init(Zlint *z);
118     Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu);
119 };
120
121 class Zlint_test_init_08 : public Zlint_test {
122     int m_no;
123 public:
124     Zlint_test_init_08();
125     virtual ~Zlint_test_init_08();
126     Zlint_code init(Zlint *z);
127     Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu);
128     Zlint_code recv_fail(Zlint *z, int reason);
129 };
130
131 class Zlint_test_search_01 : public Zlint_test {
132     int m_query_no;
133     int m_got_result_set;
134     int m_record_syntax_no;
135     int m_sort_no;
136     Zlint_code sendTest(Zlint *z);
137 public:
138     Zlint_test_search_01();
139     virtual ~Zlint_test_search_01();
140     Zlint_code init(Zlint *z);
141     Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu);
142     Zlint_code recv_fail(Zlint *z, int reason);
143 };
144
145 class Zlint_test_scan_01 : public Zlint_test {
146     int m_scan_no;
147     Zlint_code sendTest(Zlint *z);
148 public:
149     Zlint_test_scan_01();
150     virtual ~Zlint_test_scan_01();
151     Zlint_code init(Zlint *z);
152     Zlint_code recv_gdu(Zlint *z, Z_GDU *gdu);
153     Zlint_code recv_fail(Zlint *z, int reason);
154 };
155 /*
156  * Local variables:
157  * c-basic-offset: 4
158  * indent-tabs-mode: nil
159  * End:
160  * vim: shiftwidth=4 tabstop=8 expandtab
161  */
162