Functional session_shared module. Require yazpp 1.0.1.
[metaproxy-moved-to-github.git] / src / package.hpp
1 /* $Id: package.hpp,v 1.18 2006-06-19 23:54:02 adam Exp $
2    Copyright (c) 2005-2006, 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 <iostream>
11 #include <stdexcept>
12 #include <yazpp/gdu.h>
13
14 #include "router.hpp"
15 #include "filter.hpp"
16 #include "session.hpp"
17
18 namespace metaproxy_1 {
19     
20     class Origin {
21         enum origin_t {
22             API,
23             UNIX,
24             TCPIP
25         } type;
26         std::string address; // UNIX+TCPIP
27         int port;            // TCPIP only
28     public:
29         Origin() : type(API) {};
30     };
31
32     class Package {
33     public:
34         Package();
35
36         ~Package();
37         
38         Package(metaproxy_1::Session &session, const 
39                 metaproxy_1::Origin &origin);
40
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         int data() const;
54
55         /// set function - left val in assignment
56         int & data();
57         
58         /// set function - can be chained
59         Package & data(const int & data);
60         
61         /// get function - right val in assignment
62         Origin origin() const;
63         
64         /// set function - left val in assignment
65         Origin & origin();
66         
67         /// set function - can be chained
68         Package & origin(const Origin & origin);
69
70         Package & router(const Router &router);
71
72         yazpp_1::GDU &request();
73
74         yazpp_1::GDU &response();
75                 
76         /// get function - right val in assignment
77         Session session() const;
78         
79     private:
80         Session m_session;
81         Origin m_origin;
82
83         RoutePos *m_route_pos;
84
85         int m_data;
86         
87         yazpp_1::GDU m_request_gdu;
88         yazpp_1::GDU m_response_gdu;
89     };
90 }
91
92 #endif
93 /*
94  * Local variables:
95  * c-basic-offset: 4
96  * indent-tabs-mode: nil
97  * c-file-style: "stroustrup"
98  * End:
99  * vim: shiftwidth=4 tabstop=8 expandtab
100  */