Added object Yaz_Z_Assoc. Much more functional client.
[yazpp-moved-to-github.git] / src / yaz-proxy.cpp
1 /*
2  * Copyright (c) 1998-1999, Index Data.
3  * See the file LICENSE for details.
4  * Sebastian Hammer, Adam Dickmeiss
5  * 
6  * $Log: yaz-proxy.cpp,v $
7  * Revision 1.3  1999-04-09 11:46:57  adam
8  * Added object Yaz_Z_Assoc. Much more functional client.
9  *
10  * Revision 1.2  1999/01/28 13:08:46  adam
11  * Yaz_PDU_Assoc better encapsulated. Memory leak fix in
12  * yaz-socket-manager.cc.
13  *
14  * Revision 1.1.1.1  1999/01/28 09:41:07  adam
15  * First implementation of YAZ++.
16  *
17  */
18
19 #include <assert.h>
20
21 #include <log.h>
22
23 #include <yaz-proxy.h>
24
25 Yaz_Proxy::Yaz_Proxy(IYaz_PDU_Observable *the_PDU_Observable) :
26     Yaz_Z_Assoc(the_PDU_Observable)
27 {
28     m_PDU_Observable = the_PDU_Observable;
29     m_maps = 0;
30     m_client = 0;
31 }
32
33 Yaz_Proxy::~Yaz_Proxy()
34 {
35 }
36
37 IYaz_PDU_Observer *Yaz_Proxy::clone(IYaz_PDU_Observable
38                                     *the_PDU_Observable)
39 {
40     return new Yaz_Proxy(the_PDU_Observable);
41 }
42
43 void Yaz_Proxy::recv_Z_PDU(Z_APDU *apdu)
44 {
45     if (apdu->which == Z_APDU_initRequest)
46     {
47         assert (m_client == 0);
48         logf (LOG_LOG, "got InitRequest");
49         m_client = new Yaz_ProxyClient(m_PDU_Observable->clone());
50         m_client->m_server = this;
51         m_client->client("localhost:8888");
52     }
53     assert (m_client);
54     logf (LOG_LOG, "sending PDU");
55     m_client->send_Z_PDU(apdu);
56 }
57
58 void Yaz_Proxy::failNotify()
59 {
60     logf (LOG_LOG, "failNotity server");
61     delete m_client;
62     delete this;
63 }
64
65 void Yaz_ProxyClient::failNotify()
66 {
67     logf (LOG_LOG, "failNotity client");
68     delete m_server;
69     delete this;
70 }
71
72 IYaz_PDU_Observer *Yaz_ProxyClient::clone(IYaz_PDU_Observable
73                                           *the_PDU_Observable)
74 {
75     return new Yaz_ProxyClient(the_PDU_Observable);
76 }
77
78 Yaz_ProxyClient::Yaz_ProxyClient(IYaz_PDU_Observable *the_PDU_Observable) :
79     Yaz_Z_Assoc (the_PDU_Observable)
80 {
81     
82 }
83
84 void Yaz_ProxyClient::recv_Z_PDU(Z_APDU *apdu)
85 {
86     m_server->send_Z_PDU(apdu);
87 }