+/* $Id: package.hpp,v 1.22 2006-08-30 10:48:52 adam Exp $
+ Copyright (c) 2005-2006, Index Data.
-#ifndef PACKAGE_HPP
-#define PACKAGE_HPP
+ See the LICENSE file for details
+ */
+
+#ifndef YP2_PACKAGE_HPP
+#define YP2_PACKAGE_HPP
+#include <iosfwd>
#include <stdexcept>
-#include <yaz++/gdu.h>
+#include <yazpp/gdu.h>
+#include "router.hpp"
+#include "filter.hpp"
#include "session.hpp"
-namespace yp2 {
+namespace metaproxy_1
+{
+ class Origin;
+ class Package;
+}
+
+
+namespace std
+{
+ std::ostream& operator<<(std::ostream& os, metaproxy_1::Origin& o);
+ std::ostream& operator<<(std::ostream& os, metaproxy_1::Package& p);
+}
+
+namespace metaproxy_1 {
class Origin {
+ friend std::ostream&
+ std::operator<<(std::ostream& os, metaproxy_1::Origin& o);
+
enum origin_t {
API,
UNIX,
TCPIP
} type;
std::string address; // UNIX+TCPIP
- int port; // TCPIP only
+ unsigned long origin_id;
+ public:
+ Origin();
+ void set_tcpip_address(std::string addr, unsigned long id);
};
-
+
class Package {
public:
-
-
- Package(yp2::Session &session, yp2::Origin &origin)
- : m_session(session), m_origin(origin),
- m_filter(0), m_router(0), m_data(0) {}
-
- /// send Package to it's next Filter defined in Router
- Package & move() {
- m_filter = m_router->move(m_filter, this);
- if (m_filter)
- return m_filter->process(*this);
- else
- return *this;
- }
-
-
- /// access session - left val in assignment
- yp2::Session & session() {
- return m_session;
- }
-
- /// get function - right val in assignment
- unsigned int data() const {
- return m_data;
- }
-
- /// set function - left val in assignment
- unsigned int & data() {
- return m_data;
- }
-
- /// set function - can be chained
- Package & data(const unsigned int & data){
- m_data = data;
- return *this;
- }
-
-
- /// get function - right val in assignment
- Origin origin() const {
- return m_origin;
- }
-
- /// set function - left val in assignment
- Origin & origin() {
- return m_origin;
- }
-
- /// set function - can be chained
- Package & origin(const Origin & origin){
- m_origin = origin;
- return *this;
- }
-
-
- //Router router() const {
- // return m_router;
- //}
-
- //Router & router() {
- // return m_router;
- //}
-
- /// set function - can be chained
- Package & router(const Router &router){
- m_filter = 0;
- m_router = &router;
- return *this;
- }
-
-
- private:
- Session m_session;
-// unsigned long int m_session_id;
-// bool m_session_close;
- Origin m_origin;
-
- const Filter *m_filter;
- const Router *m_router;
- unsigned int m_data;
-
- yazpp_1::GDU m_request_gdu;
- yazpp_1::GDU m_response_gdu;
- };
-
-
-
+ Package();
+
+ ~Package();
+
+ Package(metaproxy_1::Session &session,
+ const metaproxy_1::Origin &origin);
+
+ Package & copy_filter(const Package &p);
+
+ /// send Package to it's next Filter defined in Router
+ void move();
+
+ /// send Package to other route
+ void move(std::string route);
+
+ /// access session - left val in assignment
+ metaproxy_1::Session & session();
+
+ /// get function - right val in assignment
+ int data() const;
+
+ /// set function - left val in assignment
+ int & data();
+
+ /// set function - can be chained
+ Package & data(const int & data);
+
+ /// get function - right val in assignment
+ Origin origin() const;
+
+ /// set function - left val in assignment
+ Origin & origin();
+
+ /// set function - can be chained
+ Package & origin(const Origin & origin);
+
+ Package & router(const Router &router);
+
+ yazpp_1::GDU &request();
+
+ yazpp_1::GDU &response();
+
+ /// get function - right val in assignment
+ Session session() const;
+
+ private:
+ Session m_session;
+ Origin m_origin;
+
+ RoutePos *m_route_pos;
+
+ int m_data;
+
+ yazpp_1::GDU m_request_gdu;
+ yazpp_1::GDU m_response_gdu;
+ };
}
+
+
#endif
/*
* Local variables:
* c-basic-offset: 4
* indent-tabs-mode: nil
+ * c-file-style: "stroustrup"
* End:
* vim: shiftwidth=4 tabstop=8 expandtab
*/