X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FQueueingSocketSink.ct;h=836c1cd1dfa8ff0fc26d06928d9d6632ec4caf03;hb=93d9568d448749dc187e7622b733a4a3caa319df;hp=594c5019e2aa0b1a64057b020cf7844b5767c223;hpb=32bf29e751e6c73ca2bc78c21996e4320e934673;p=senf.git diff --git a/senf/PPI/QueueingSocketSink.ct b/senf/PPI/QueueingSocketSink.ct index 594c501..836c1cd 100644 --- a/senf/PPI/QueueingSocketSink.ct +++ b/senf/PPI/QueueingSocketSink.ct @@ -26,11 +26,12 @@ //#include "QueueingSocketSink.ih" // Custom includes +#include #define prefix_ -///////////////////////////////ct.p//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::ppi::QueueingAlgorithmRegistry template @@ -42,7 +43,7 @@ prefix_ void senf::ppi::QueueingAlgorithmRegistry::registerQAlgorithm(std::strin throw Exception("Duplicated QAlgorithm Registration ") << key; } -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::ppi::detail::QueueingAlgorithmRegistry_Entry template @@ -52,7 +53,7 @@ prefix_ senf::ppi::QueueingAlgorithm::ptr senf::ppi::detail::QueueingAlgorithmRe return QAlgorithm::create(); } -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::ppi::module::PassiveQueueingSocketSink template @@ -72,13 +73,23 @@ prefix_ senf::ppi::module::PassiveQueueingSocketSink::PassiveQueueingSoc event_.enabled( false); noroute(input); input.onRequest( &PassiveQueueingSocketSink::write); + input.qdisc( QueueingDiscipline::NONE); + checkThrottle(); +} + +template +prefix_ void senf::ppi::module::PassiveQueueingSocketSink::handle(Handle const & handle) +{ + handle_ = handle; + event_.set( handle_, IOEvent::Write); + qAlgo_->clear(); checkThrottle(); } template prefix_ void senf::ppi::module::PassiveQueueingSocketSink::write() { - PacketType p ( input.read()); + PacketType p ( input()); if (qAlgo_->size() > 0) { qAlgo_->enqueue( p); return; @@ -126,7 +137,7 @@ prefix_ void senf::ppi::module::PassiveQueueingSocketSink::setQAlgorithm qAlgorithm( QueueingAlgorithmRegistry::instance().createQAlgorithm( key)); } -///////////////////////////////ct.e//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// #undef prefix_