X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FConnectors.cc;h=8c46477ef7f9aa8a4a75ebb0701312a24593e1c4;hb=e7ac3fef18af5ec0076f02290ad439a9d6e05491;hp=7fe75a0deadcdb886f2c2d92c77128c07f149478;hpb=f539f4271d470794a773a92bacd8ba086c9bc1cd;p=senf.git diff --git a/PPI/Connectors.cc b/PPI/Connectors.cc index 7fe75a0..8c46477 100644 --- a/PPI/Connectors.cc +++ b/PPI/Connectors.cc @@ -1,8 +1,8 @@ // $Id$ // // Copyright (C) 2007 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY // Stefan Bund // // This program is free software; you can redistribute it and/or modify @@ -24,7 +24,7 @@ \brief Connectors non-inline non-template implementation */ #include "Connectors.hh" -//#include "Connectors.ih" +#include "Connectors.ih" // Custom includes #include "Route.hh" @@ -39,6 +39,23 @@ //////////////////////////////////////// // private members +prefix_ void senf::ppi::connector::PassiveConnector::notifyUnthrottle() +{ + if (throttled() && !nativeThrottled_) { + Routes::const_iterator i (routes_.begin()); + Routes::const_iterator const i_end (routes_.end()); + for (; i != i_end; ++i) + if ((*i)->throttled()) + break; + if (i == i_end) { + remoteThrottled_ = false; + emitUnthrottle(); + } + } + else + remoteThrottled_ = false; +} + /////////////////////////////////////////////////////////////////////////// // senf::ppi::connector::ActiveConnector @@ -99,34 +116,34 @@ prefix_ void senf::ppi::connector::InputConnector::v_dequeueEvent() {} /////////////////////////////////////////////////////////////////////////// -// senf::ppi::connector::ActiveInput +// senf::ppi::connector::GenericActiveInput //////////////////////////////////////// // private members -prefix_ void senf::ppi::connector::ActiveInput::v_requestEvent() +prefix_ void senf::ppi::connector::GenericActiveInput::v_requestEvent() { request(); } /////////////////////////////////////////////////////////////////////////// -// senf::ppi::connector::PassiveInput +// senf::ppi::connector::GenericPassiveInput //////////////////////////////////////// // private members -prefix_ void senf::ppi::connector::PassiveInput::v_enqueueEvent() +prefix_ void senf::ppi::connector::GenericPassiveInput::v_enqueueEvent() { emit(); qdisc_->update(*this, QueueingDiscipline::ENQUEUE); } -prefix_ void senf::ppi::connector::PassiveInput::v_dequeueEvent() +prefix_ void senf::ppi::connector::GenericPassiveInput::v_dequeueEvent() { qdisc_->update(*this, QueueingDiscipline::DEQUEUE); } -prefix_ void senf::ppi::connector::PassiveInput::v_unthrottleEvent() +prefix_ void senf::ppi::connector::GenericPassiveInput::v_unthrottleEvent() { size_type n (queueSize()); while (n) {