X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fpackage.cpp;h=1277b39e3ea373edaed37ef0063fab607f623616;hb=79100c2ae2dac4bdde4f4d46b69e147562b4ec6c;hp=aa38db0f948f158ab8f5868d3b90bc5d2af65e50;hpb=ca452b141e9a32d98166f7e07fceb30d5185130a;p=metaproxy-moved-to-github.git diff --git a/src/package.cpp b/src/package.cpp index aa38db0..1277b39 100644 --- a/src/package.cpp +++ b/src/package.cpp @@ -1,5 +1,5 @@ -/* $Id: package.cpp,v 1.1 2005-11-11 15:00:25 adam Exp $ - Copyright (c) 2005, Index Data. +/* $Id: package.cpp,v 1.7 2006-03-16 10:40:59 adam Exp $ + Copyright (c) 2005-2006, Index Data. %LICENSE% */ @@ -8,90 +8,109 @@ #include "package.hpp" -yp2::Package::Package() - : m_filter(0), m_router(0), m_data(0) +namespace mp = metaproxy_1; + +mp::Package::Package() + : m_route_pos(0), m_data(0) { } -yp2::Package::Package(yp2::Session &session, yp2::Origin &origin) +mp::Package::~Package() +{ + delete m_route_pos; +} + +mp::Package::Package(mp::Session &session, mp::Origin &origin) : m_session(session), m_origin(origin), - m_filter(0), m_router(0), m_data(0) + m_route_pos(0), m_data(0) { } -yp2::Package & yp2::Package::copy_filter(const Package &p) +mp::Package & mp::Package::copy_filter(const Package &p) { - m_router = p.m_router; - m_filter = p.m_filter; + m_route_pos = p.m_route_pos->clone(); return *this; } -void yp2::Package::move() +void mp::Package::move() { - m_filter = m_router->move(m_filter, this); - if (m_filter) - m_filter->process(*this); + if (m_route_pos) + { + const filter::Base *next_filter = m_route_pos->move(0); + if (next_filter) + next_filter->process(*this); + } } -yp2::Session & yp2::Package::session() +void mp::Package::move(std::string route) +{ + if (m_route_pos) + { + const char *r_cstr = route.length() ? route.c_str() : 0; + const filter::Base *next_filter = m_route_pos->move(r_cstr); + if (next_filter) + next_filter->process(*this); + } +} + + +mp::Session & mp::Package::session() { return m_session; } -unsigned int yp2::Package::data() const +int mp::Package::data() const { return m_data; } -unsigned int & yp2::Package::data() +int & mp::Package::data() { return m_data; } - -yp2::Package & yp2::Package::data(const unsigned int & data) +mp::Package & mp::Package::data(const int & data) { m_data = data; return *this; } -yp2::Origin yp2::Package::origin() const +mp::Origin mp::Package::origin() const { return m_origin; } -yp2::Origin & yp2::Package::origin() +mp::Origin & mp::Package::origin() { return m_origin; } -yp2::Package & yp2::Package::origin(const Origin & origin) +mp::Package & mp::Package::origin(const Origin & origin) { m_origin = origin; return *this; } -yp2::Package & yp2::Package::router(const yp2::Router &router) +mp::Package & mp::Package::router(const mp::Router &router) { - m_filter = 0; - m_router = &router; + m_route_pos = router.createpos(); return *this; } -yazpp_1::GDU &yp2::Package::request() +yazpp_1::GDU &mp::Package::request() { return m_request_gdu; } -yazpp_1::GDU &yp2::Package::response() +yazpp_1::GDU &mp::Package::response() { - return m_response_gdu; + return m_response_gdu; } -yp2::Session yp2::Package::session() const +mp::Session mp::Package::session() const { return m_session; }