Router stores filters in a sequence. For now packages just point
[metaproxy-moved-to-github.git] / src / test_filter2.cpp
1
2 #include <iostream>
3 #include "design.h"
4
5 class FilterConstant: public yp2::Filter {
6 public:
7     yp2::Package & process(yp2::Package & package) const {
8         package.data() = 1234;
9         return package.move();
10     };
11 };
12
13
14 class FilterDouble: public yp2::Filter {
15 public:
16     yp2::Package & process(yp2::Package & package) const {
17         package.data() = package.data() * 2;
18         return package.move();
19     };
20 };
21     
22     
23 int main(int argc, char **argv)
24 {
25     try {
26         FilterConstant fc;
27         FilterDouble fd;
28
29         {
30             yp2::Router router1;
31             
32             // test filter set/get/exception
33             router1.rule(fc);
34             
35             router1.rule(fd);
36             
37             yp2::Package pack_in;
38             
39             yp2::Package pack_out;
40             
41             pack_out = pack_in.router(router1).move(); 
42             
43             if (pack_out.data() != 2468)
44             {
45                 exit(1);
46             }
47         }
48         {
49             yp2::Router router1;
50             
51             router1.rule(fd);
52             router1.rule(fc);
53             
54             yp2::Package pack_in;
55             
56             yp2::Package pack_out;
57             
58             pack_out = pack_in.router(router1).move(); 
59             
60             if (pack_out.data() != 1234)
61             {
62                 exit(1);
63             }
64         }
65
66     }
67     catch (std::exception &e) {
68         std::cout << e.what() << "\n";
69         exit(1);
70     }
71     exit(0);
72 }
73
74 /*
75  * Local variables:
76  * c-basic-offset: 4
77  * indent-tabs-mode: nil
78  * End:
79  * vim: shiftwidth=4 tabstop=8 expandtab
80  */