RouterFleXML now reads XML simple config and make proper runtime
[metaproxy-moved-to-github.git] / src / package.cpp
1 /* $Id: package.cpp,v 1.4 2006-01-09 13:43:59 adam Exp $
2    Copyright (c) 2005, Index Data.
3
4 %LICENSE%
5  */
6
7 #include "config.hpp"
8
9 #include "package.hpp"
10
11 yp2::Package::Package() 
12     :  
13 #if ROUTE_POS
14     m_route_pos(0),
15 #else
16     m_filter(0), m_router(0),
17 #endif
18     m_data(0)
19 {
20 }
21
22 yp2::Package::~Package()
23 {
24 #if ROUTE_POS
25     delete m_route_pos;
26 #endif
27 }
28
29 yp2::Package::Package(yp2::Session &session, yp2::Origin &origin) 
30     : m_session(session), m_origin(origin),
31 #if ROUTE_POS
32       m_route_pos(0),
33 #else
34       m_filter(0), m_router(0),
35 #endif
36       m_data(0)
37 {
38 }
39
40 yp2::Package & yp2::Package::copy_filter(const Package &p)
41 {
42 #if ROUTE_POS
43     m_route_pos = p.m_route_pos->clone();
44 #else
45     m_router = p.m_router;
46     m_filter = p.m_filter;
47 #endif
48     return *this;
49 }
50
51
52 void yp2::Package::move()
53 {
54 #if ROUTE_POS
55     if (m_route_pos)
56     {
57         const filter::Base *next_filter = m_route_pos->move();
58         if (next_filter)
59             next_filter->process(*this);
60     }
61 #else
62     m_filter = m_router->move(m_filter, this);
63     if (m_filter)
64         m_filter->process(*this);
65 #endif
66 }
67
68 yp2::Session & yp2::Package::session()
69 {
70     return m_session;
71 }
72
73
74 int yp2::Package::data() const
75 {
76     return m_data;
77 }
78
79 int & yp2::Package::data()
80 {
81     return m_data;
82 }
83         
84 yp2::Package & yp2::Package::data(const int & data)
85 {
86     m_data = data;
87     return *this;
88 }
89
90 yp2::Origin yp2::Package::origin() const 
91 {
92     return m_origin;
93 }
94         
95 yp2::Origin & yp2::Package::origin()
96 {
97     return m_origin;
98 }
99
100 yp2::Package & yp2::Package::origin(const Origin & origin)
101 {
102     m_origin = origin;
103     return *this;
104 }
105
106 yp2::Package & yp2::Package::router(const yp2::Router &router)
107 {
108 #if ROUTE_POS
109     m_route_pos = router.createpos();
110 #else
111     m_filter = 0;
112     m_router = &router;
113 #endif
114     return *this;
115 }
116
117 yazpp_1::GDU &yp2::Package::request()
118 {
119     return m_request_gdu;
120 }
121
122
123 yazpp_1::GDU &yp2::Package::response()
124 {
125     return m_response_gdu;
126 }
127
128 yp2::Session yp2::Package::session() const
129 {
130     return m_session;
131 }
132                 
133 /*
134  * Local variables:
135  * c-basic-offset: 4
136  * indent-tabs-mode: nil
137  * c-file-style: "stroustrup"
138  * End:
139  * vim: shiftwidth=4 tabstop=8 expandtab
140  */