Many improvements. Modified to proxy server to work with "sessions"
[yazpp-moved-to-github.git] / include / yaz-proxy.h
1 /*
2  * Copyright (c) 1998-1999, Index Data.
3  * See the file LICENSE for details.
4  * Sebastian Hammer, Adam Dickmeiss
5  * 
6  * $Id: yaz-proxy.h,v 1.5 1999-04-21 12:09:01 adam Exp $
7  */
8
9 #include <yaz-z-assoc.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     Yaz_Proxy *m_server;
21     void failNotify();
22     void timeoutNotify();
23     char m_cookie[32];
24     Yaz_ProxyClient *m_next;
25     Yaz_ProxyClient **m_prev;
26 };
27
28 /// Information Retrieval Proxy Server.
29 class YAZ_EXPORT Yaz_Proxy : public Yaz_Z_Assoc {
30  public:
31     Yaz_Proxy(IYaz_PDU_Observable *the_PDU_Observable);
32     ~Yaz_Proxy();
33     void recv_Z_PDU(Z_APDU *apdu);
34     IYaz_PDU_Observer* clone(IYaz_PDU_Observable *the_PDU_Observable);
35     void failNotify();
36     void timeoutNotify();
37  private:
38     char *get_cookie(Z_OtherInformation **otherInfo);
39     char *get_proxy(Z_OtherInformation **otherInfo);
40     Yaz_ProxyClient *get_client(Z_APDU *apdu);
41     
42     Yaz_ProxyClient *m_client;
43     IYaz_PDU_Observable *m_PDU_Observable;
44     Yaz_ProxyClient *m_clientPool;
45     Yaz_Proxy *m_parent;
46     int m_seqno;
47     int m_keepalive;
48 };
49