c5e63ff69b739bad293e55808c78f97111bcd8d0
[metaproxy-moved-to-github.git] / src / package.hpp
1 /* $Id: package.hpp,v 1.10 2005-11-11 15:00:25 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(yp2::Session &session, yp2::Origin &origin);
37
38         Package & copy_filter(const Package &p);
39
40         /// send Package to it's next Filter defined in Router
41         void move();
42         
43         /// access session - left val in assignment
44         yp2::Session & session();
45         
46         /// get function - right val in assignment
47         unsigned int data() const;
48
49         
50         /// set function - left val in assignment
51         unsigned int & data();
52         
53         /// set function - can be chained
54         Package & data(const unsigned int & data);
55         
56         /// get function - right val in assignment
57         Origin origin() const;
58         
59         /// set function - left val in assignment
60         Origin & origin();
61         
62         /// set function - can be chained
63         Package & origin(const Origin & origin);
64
65         Package & router(const Router &router);
66
67         yazpp_1::GDU &request();
68
69         yazpp_1::GDU &response();
70                 
71         /// get function - right val in assignment
72         Session session() const;
73         
74     private:
75         Session m_session;
76         Origin m_origin;
77         
78         const filter::Base *m_filter;
79         const Router *m_router;
80         unsigned int m_data;
81         
82         yazpp_1::GDU m_request_gdu;
83         yazpp_1::GDU m_response_gdu;
84     };
85 }
86
87 #endif
88 /*
89  * Local variables:
90  * c-basic-offset: 4
91  * indent-tabs-mode: nil
92  * c-file-style: "stroustrup"
93  * End:
94  * vim: shiftwidth=4 tabstop=8 expandtab
95  */