Added ex_filter_frontend_net noinst program
[metaproxy-moved-to-github.git] / src / ex_filter_frontend_net.cpp
1
2 #include <cstdlib>
3 #include <iostream>
4 #include <stdexcept>
5
6 #include "config.hpp"
7
8 #include "filter_frontend_net.hpp"
9
10 #include "router.hpp"
11 #include "session.hpp"
12 #include "package.hpp"
13
14 class FilterInit: public yp2::Filter {
15 public:
16     void process(yp2::Package & package) const {
17
18         if (package.session().is_closed())
19         {
20             // std::cout << "Got Close.\n";
21         }
22        
23         Z_GDU *gdu = package.request().get();
24         if (gdu)
25         {
26             // std::cout << "Got PDU. Sending init response\n";
27             ODR odr = odr_createmem(ODR_ENCODE);
28             Z_APDU *apdu = zget_APDU(odr, Z_APDU_initResponse);
29             
30             apdu->u.initResponse->implementationName = "YP2/YAZ";
31             
32             package.response() = apdu;
33             odr_destroy(odr);
34         }
35         return package.move();
36     };
37 };
38
39 int main(int argc, char **argv)
40 {
41     try 
42     {
43         {
44             yp2::RouterChain router;
45
46             // put in frontend first
47             yp2::FilterFrontendNet filter_front;
48             filter_front.listen_address() = "tcp:@:9999";
49             //filter_front.listen_duration() = 1;  // listen a short time only
50             router.rule(filter_front);
51
52             // put in a backend
53             FilterInit filter_init;
54             router.rule(filter_init);
55
56             yp2::Session session;
57             yp2::Origin origin;
58             yp2::Package pack(session, origin);
59             
60             pack.router(router).move(); 
61         }
62     }
63     catch ( ... ) {
64         std::cerr << "unknown exception\n";
65         std::exit(1);
66     }
67 }
68
69 /*
70  * Local variables:
71  * c-basic-offset: 4
72  * indent-tabs-mode: nil
73  * End:
74  * vim: shiftwidth=4 tabstop=8 expandtab
75  */