X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FJoins.cc;h=8f4926dc4be845be126796226883b4741e6ec039;hb=c505c034e5fdc932c02aa3dc3847a5551011d87e;hp=653149a53720906d73b08ba2151afd970388e230;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/PPI/Joins.cc b/senf/PPI/Joins.cc index 653149a..8f4926d 100644 --- a/senf/PPI/Joins.cc +++ b/senf/PPI/Joins.cc @@ -39,6 +39,13 @@ /////////////////////////////////////////////////////////////////////////// // senf::ppi::module::PassiveJoin +prefix_ senf::ppi::module::PassiveJoin::PassiveJoin() +{ + noroute(output); + output.onThrottle(&PassiveJoin::onThrottle); + output.onUnthrottle(&PassiveJoin::onUnthrottle); +} + //////////////////////////////////////// // private members @@ -46,11 +53,7 @@ prefix_ void senf::ppi::module::PassiveJoin::connectorSetup(connector::PassiveIn { noroute(conn); conn.onRequest(boost::bind(&PassiveJoin::request,this,boost::ref(conn))); -} - -prefix_ void senf::ppi::module::PassiveJoin::request(connector::GenericPassiveInput & input) -{ - output(input()); + conn.qdisc( QueueingDiscipline::NONE); } prefix_ void senf::ppi::module::PassiveJoin::onThrottle() @@ -72,6 +75,12 @@ prefix_ void senf::ppi::module::PassiveJoin::onUnthrottle() /////////////////////////////////////////////////////////////////////////// // senf::ppi::module::PriorityJoin +prefix_ senf::ppi::module::PriorityJoin::PriorityJoin() +{ + noroute(output); + output.onRequest(&PriorityJoin::request); +} + //////////////////////////////////////// // private members @@ -85,12 +94,12 @@ senf::ppi::module::PriorityJoin::connectorSetup(PriorityJoin::ConnectorType & co if (priority < 0) { priority = connectors().size() + priority; - if (priority < 0) + if (priority < 0) priority = 0; } if (priority >= int(connectors().size())-1) return; - + connectors().insert(connectors().begin()+priority, connectors().pop_back().release()); }