design.h split up into filter.hpp package.hpp router.hpp session.hpp
[metaproxy-moved-to-github.git] / src / package.hpp
1
2 #ifndef PACKAGE_HPP
3 #define PACKAGE_HPP
4
5 #include <stdexcept>
6
7
8 namespace yp2 {
9   
10   class Package {
11   public:
12       
13       Package(unsigned long int id = 0, bool close = 0) 
14           : m_session_id(id),  m_session_close(close),
15           m_filter(0), m_router(0), m_data(0)  {}
16
17       /// send Package to it's next Filter defined in Router
18       Package & move() {
19           m_filter = m_router->move(m_filter, this);
20           if (m_filter)
21               return m_filter->process(*this);
22           else
23               return *this;
24           }
25       
26
27       /// get function - right val in assignment
28       unsigned int session_id() const {
29           return m_session_id;
30       }
31       
32       /// get function - right val in assignment
33       unsigned int session_close() const {
34           return m_session_close;
35       }
36    
37
38       /// get function - right val in assignment
39       unsigned int data() const {
40           return m_data;
41       }
42
43       /// set function - left val in assignment
44       unsigned int & data() {
45           return m_data;
46       }
47
48       /// set function - can be chained
49       Package & data(const unsigned int & data){
50           m_data = data;
51           return *this;
52       }
53       
54
55       //Router router() const {
56       //  return m_router;
57       //}
58
59       //Router & router() {
60       //  return m_router;
61       //}
62
63       /// set function - can be chained
64       Package & router(const Router &router){
65           m_filter = 0;
66           m_router = &router;
67           return *this;
68       }
69
70       
71   private:
72       unsigned long int m_session_id;
73       bool m_session_close;
74       const Filter *m_filter;
75       const Router *m_router;
76       unsigned int m_data;
77   };
78   
79
80   
81 }
82
83 #endif
84 /*
85  * Local variables:
86  * c-basic-offset: 4
87  * indent-tabs-mode: nil
88  * End:
89  * vim: shiftwidth=4 tabstop=8 expandtab
90  */