minor
[yazpp-moved-to-github.git] / include / yaz-proxy.h
1 /*
2  * Copyright (c) 1998-2000, Index Data.
3  * See the file LICENSE for details.
4  * 
5  * $Id: yaz-proxy.h,v 1.13 2000-09-08 10:23:42 adam Exp $
6  */
7
8 #include <yaz-z-assoc.h>
9 #include <yaz-z-query.h>
10
11 class Yaz_Proxy;
12
13 /// Private class
14 class YAZ_EXPORT Yaz_ProxyClient : public Yaz_Z_Assoc {
15     friend Yaz_Proxy;
16     Yaz_ProxyClient(IYaz_PDU_Observable *the_PDU_Observable);
17     ~Yaz_ProxyClient();
18     void recv_Z_PDU(Z_APDU *apdu);
19     IYaz_PDU_Observer* clone(IYaz_PDU_Observable *the_PDU_Observable);
20     void shutdown();
21     Yaz_Proxy *m_server;
22     void failNotify();
23     void timeoutNotify();
24     void connectNotify();
25     char m_cookie[32];
26     Yaz_ProxyClient *m_next;
27     Yaz_ProxyClient **m_prev;
28     int m_init_flag;
29     Yaz_Z_Query *m_last_query;
30     int m_last_resultCount;
31     int m_sr_transform;
32     int m_seqno;
33     int m_waiting;
34 };
35
36 /// Information Retrieval Proxy Server.
37 class YAZ_EXPORT Yaz_Proxy : public Yaz_Z_Assoc {
38  private:
39     char *get_cookie(Z_OtherInformation **otherInfo);
40     char *get_proxy(Z_OtherInformation **otherInfo);
41     Yaz_ProxyClient *get_client(Z_APDU *apdu);
42     Z_APDU *result_set_optimize(Z_APDU *apdu);
43     void shutdown();
44     
45     Yaz_ProxyClient *m_client;
46     IYaz_PDU_Observable *m_PDU_Observable;
47     Yaz_ProxyClient *m_clientPool;
48     Yaz_Proxy *m_parent;
49     int m_seqno;
50     int m_max_clients;
51     int m_keepalive;
52     char *m_proxyTarget;
53     long m_seed;
54  public:
55     Yaz_Proxy(IYaz_PDU_Observable *the_PDU_Observable);
56     ~Yaz_Proxy();
57     void recv_Z_PDU(Z_APDU *apdu);
58     IYaz_PDU_Observer* clone(IYaz_PDU_Observable *the_PDU_Observable);
59     void failNotify();
60     void timeoutNotify();
61     void connectNotify();
62     void set_proxyTarget(const char *target);
63     char *get_proxyTarget() { return m_proxyTarget; };
64     void set_max_clients(int m) { m_max_clients = m; };
65 };
66