added simple explain facility to sru-to-z3950 filter, also added server host and...
[metaproxy-moved-to-github.git] / src / package.hpp
1 /* $Id: package.hpp,v 1.24 2006-09-26 11:37:08 marc 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 <iosfwd>
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     class Package;
22 }
23
24
25 namespace std 
26 {
27     std::ostream& operator<<(std::ostream& os, metaproxy_1::Origin& o);
28     std::ostream& operator<<(std::ostream& os, metaproxy_1::Package& p);
29 }
30
31 namespace metaproxy_1 {
32     
33     class Origin {
34         friend std::ostream& 
35         std::operator<<(std::ostream& os,  metaproxy_1::Origin& o);
36
37         enum origin_t {
38             API,
39             UNIX,
40             TCPIP
41         } type;
42         std::string address; // UNIX+TCPIP
43         unsigned long origin_id;
44         std::string m_server_host;
45         unsigned int m_server_port;
46     public:
47         Origin(std::string server_host = "", unsigned int server_port = 0);
48
49         /// get function - right val in assignment
50         std::string server_host() const;
51
52         /// get function - right val in assignment
53         unsigned int server_port() const;
54         
55         void set_tcpip_address(std::string addr, unsigned long id);
56     };
57
58     class Package {
59     public:
60         Package();
61
62         ~Package();
63         
64         Package(metaproxy_1::Session &session, 
65                 const metaproxy_1::Origin &origin);
66
67         Package & copy_filter(const Package &p);
68
69         /// send Package to it's next Filter defined in Router
70         void move();
71
72         /// send Package to other route
73         void move(std::string route);
74         
75         /// access session - left val in assignment
76         metaproxy_1::Session & session();
77         
78         /// get function - right val in assignment
79         Origin origin() const;
80         
81         /// set function - left val in assignment
82         Origin & origin();
83         
84         /// set function - can be chained
85         Package & origin(const Origin & origin);
86
87         Package & router(const Router &router);
88
89         yazpp_1::GDU &request();
90
91         yazpp_1::GDU &response();
92                 
93         /// get function - right val in assignment
94         Session session() const;
95         
96     private:
97         Session m_session;
98         Origin m_origin;
99
100         RoutePos *m_route_pos;
101
102         //int m_data;
103         
104         yazpp_1::GDU m_request_gdu;
105         yazpp_1::GDU m_response_gdu;
106     };
107 }
108
109
110
111 #endif
112 /*
113  * Local variables:
114  * c-basic-offset: 4
115  * indent-tabs-mode: nil
116  * c-file-style: "stroustrup"
117  * End:
118  * vim: shiftwidth=4 tabstop=8 expandtab
119  */