466d7a0beb298aa1125698503936ed79530c2ced
[metaproxy-moved-to-github.git] / src / package.hpp
1 /* $Id: package.hpp,v 1.26 2007-01-25 14:05:54 adam Exp $
2    Copyright (c) 2005-2007, Index Data.
3
4    See the LICENSE file for details
5  */
6
7 #ifndef YP2_PACKAGE_HPP
8 #define YP2_PACKAGE_HPP
9
10 #include <iosfwd>
11
12 #include <yazpp/gdu.h>
13
14 #include "router.hpp"
15 #include "filter.hpp"
16 #include "session.hpp"
17 #include "origin.hpp"
18
19 namespace metaproxy_1 {
20     class Package;
21 }
22
23
24 namespace std 
25 {
26     std::ostream& operator<<(std::ostream& os, metaproxy_1::Package& p);
27 }
28
29 namespace metaproxy_1 {
30
31     class Package {
32     public:
33         Package();
34
35         ~Package();
36         
37         Package(metaproxy_1::Session &session, 
38                 const metaproxy_1::Origin &origin);
39
40         /// shallow copy constructor which only copies the filter chain info
41         Package & copy_filter(const Package &p);
42
43         /// send Package to it's next Filter defined in Router
44         void move();
45
46         /// send Package to other route
47         void move(std::string route);
48         
49         /// access session - left val in assignment
50         metaproxy_1::Session & session();
51         
52         /// get function - right val in assignment
53         Origin origin() const;
54         
55         /// set function - left val in assignment
56         Origin & origin();
57         
58         /// set function - can be chained
59         Package & origin(const Origin & origin);
60
61         /// set function - can be chained
62         Package & router(const Router &router);
63
64         yazpp_1::GDU &request();
65
66         yazpp_1::GDU &response();
67                 
68         /// get function - right val in assignment
69         Session session() const;
70         
71     private:
72         Session m_session;
73         Origin m_origin;
74
75         RoutePos *m_route_pos;
76
77         //int m_data;
78         
79         yazpp_1::GDU m_request_gdu;
80         yazpp_1::GDU m_response_gdu;
81     };
82 }
83
84
85
86 #endif
87 /*
88  * Local variables:
89  * c-basic-offset: 4
90  * indent-tabs-mode: nil
91  * c-file-style: "stroustrup"
92  * End:
93  * vim: shiftwidth=4 tabstop=8 expandtab
94  */