Named routes for filter virt_db. Example in etc/config2.xml
[metaproxy-moved-to-github.git] / src / package.hpp
1 /* $Id: package.hpp,v 1.14 2006-01-11 11:51:50 adam Exp $
2    Copyright (c) 2005, Index Data.
3
4 %LICENSE%
5  */
6
7 #ifndef YP2_PACKAGE_HPP
8 #define YP2_PACKAGE_HPP
9
10 #include <iostream>
11 #include <stdexcept>
12 #include <yaz++/gdu.h>
13
14 #include "router.hpp"
15 #include "filter.hpp"
16 #include "session.hpp"
17
18 namespace yp2 {
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(yp2::Session &session, yp2::Origin &origin);
39
40         Package & copy_filter(const Package &p);
41
42         /// send Package to it's next Filter defined in Router
43         void move();
44
45         /// send Package to other route
46         void move(std::string route);
47         
48         /// access session - left val in assignment
49         yp2::Session & session();
50         
51         /// get function - right val in assignment
52         int data() const;
53
54         /// set function - left val in assignment
55         int & data();
56         
57         /// set function - can be chained
58         Package & data(const int & data);
59         
60         /// get function - right val in assignment
61         Origin origin() const;
62         
63         /// set function - left val in assignment
64         Origin & origin();
65         
66         /// set function - can be chained
67         Package & origin(const Origin & origin);
68
69         Package & router(const Router &router);
70
71         yazpp_1::GDU &request();
72
73         yazpp_1::GDU &response();
74                 
75         /// get function - right val in assignment
76         Session session() const;
77         
78     private:
79         Session m_session;
80         Origin m_origin;
81
82         RoutePos *m_route_pos;
83
84         int m_data;
85         
86         yazpp_1::GDU m_request_gdu;
87         yazpp_1::GDU m_response_gdu;
88     };
89 }
90
91 #endif
92 /*
93  * Local variables:
94  * c-basic-offset: 4
95  * indent-tabs-mode: nil
96  * c-file-style: "stroustrup"
97  * End:
98  * vim: shiftwidth=4 tabstop=8 expandtab
99  */