X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FConnectors.cci;h=3c3ad79b8220749cefba63e65b02421291f6e54a;hb=88b7af123f3faced1235041a506573caded251e8;hp=3862aab0a93a53f29cd1dd2cb1e05e2a01c07db8;hpb=f539f4271d470794a773a92bacd8ba086c9bc1cd;p=senf.git diff --git a/PPI/Connectors.cci b/PPI/Connectors.cci index 3862aab..3c3ad79 100644 --- a/PPI/Connectors.cci +++ b/PPI/Connectors.cci @@ -53,10 +53,14 @@ prefix_ senf::ppi::connector::Connector::Connector() {} prefix_ senf::ppi::connector::Connector::~Connector() -{} +{ + if (peer_) + peer_->peer_ = 0; +} prefix_ void senf::ppi::connector::Connector::connect(Connector & target) { + BOOST_ASSERT( ! peer_ && ! target.peer_ ); peer_ = & target; target.peer_ = this; } @@ -86,9 +90,10 @@ prefix_ bool senf::ppi::connector::PassiveConnector::nativeThrottled() prefix_ void senf::ppi::connector::PassiveConnector::throttle() { - if (!throttled()) + if (!throttled()) { + nativeThrottled_ = true; emitThrottle(); - nativeThrottled_ = true; + } } prefix_ void senf::ppi::connector::PassiveConnector::unthrottle() @@ -134,16 +139,6 @@ prefix_ void senf::ppi::connector::PassiveConnector::notifyThrottle() remoteThrottled_ = true; } -prefix_ void senf::ppi::connector::PassiveConnector::notifyUnthrottle() -{ - if (throttled() && !nativeThrottled_) { - remoteThrottled_ = false; - emitUnthrottle(); - } - else - remoteThrottled_ = false; -} - prefix_ void senf::ppi::connector::PassiveConnector::emitThrottle() { peer().notifyThrottle(); @@ -158,6 +153,11 @@ prefix_ void senf::ppi::connector::PassiveConnector::emitUnthrottle() prefix_ void senf::ppi::connector::PassiveConnector::v_unthrottleEvent() {} +prefix_ void senf::ppi::connector::PassiveConnector::registerRoute(ForwardingRoute & route) +{ + routes_.push_back(&route); +} + /////////////////////////////////////////////////////////////////////////// // senf::ppi::connector::ActiveConnector @@ -177,6 +177,12 @@ prefix_ void senf::ppi::connector::ActiveConnector::onUnthrottle() unthrottleCallback_ = Callback(); } +prefix_ bool senf::ppi::connector::ActiveConnector::throttled() + const +{ + return peer().throttled(); +} + //////////////////////////////////////// // protected members @@ -187,6 +193,11 @@ prefix_ senf::ppi::connector::ActiveConnector::ActiveConnector() /////////////////////////////////////////////////////////////////////////// // senf::ppi::connector::InputConnector +prefix_ senf::Packet senf::ppi::connector::InputConnector::read() +{ + return operator()(); +} + prefix_ senf::ppi::connector::OutputConnector & senf::ppi::connector::InputConnector::peer() const { @@ -250,6 +261,11 @@ prefix_ void senf::ppi::connector::OutputConnector::operator()(Packet p) peer().enqueue(p); } +prefix_ void senf::ppi::connector::OutputConnector::write(Packet p) +{ + operator()(p); +} + prefix_ senf::ppi::connector::InputConnector & senf::ppi::connector::OutputConnector::peer() const {