X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FSocketSink.ct;h=69726a28d44250d6ca8c8c179cada27127fbb4f0;hb=6927c87144ca23845065e3c23e37c75f5f059cf3;hp=e578fd07ae614fa5fee0714d05f03cc58d7d6e7d;hpb=a1a6c76a214ad1935032826713cabaf9ac57bf07;p=senf.git diff --git a/PPI/SocketSink.ct b/PPI/SocketSink.ct index e578fd0..69726a2 100644 --- a/PPI/SocketSink.ct +++ b/PPI/SocketSink.ct @@ -34,6 +34,21 @@ // senf::ppi::module::ActiveSocketSink template +prefix_ senf::ppi::module::ActiveSocketSink::ActiveSocketSink() +{ + registerEvent( event_, &ActiveSocketSink::write ); + route(input, event_); +} + +template +prefix_ senf::ppi::module::ActiveSocketSink::ActiveSocketSink(Writer const & writer) + : writer_ (writer) +{ + registerEvent( event_, &ActiveSocketSink::write ); + route(input, event_); +} + +template prefix_ senf::ppi::module::ActiveSocketSink::ActiveSocketSink(Handle handle) : handle_(handle), event_(handle_, IOEvent::Write), writer_() { @@ -63,11 +78,29 @@ prefix_ void senf::ppi::module::ActiveSocketSink::write() // senf::ppi::module::PassiveSocketSink template +prefix_ senf::ppi::module::PassiveSocketSink::PassiveSocketSink() +{ + noroute(input); + input.onRequest(&PassiveSocketSink::write); + checkThrottle(); +} + +template +prefix_ senf::ppi::module::PassiveSocketSink::PassiveSocketSink(Writer const & writer) + : writer_ (writer) +{ + noroute(input); + input.onRequest(&PassiveSocketSink::write); + checkThrottle(); +} + +template prefix_ senf::ppi::module::PassiveSocketSink::PassiveSocketSink(Handle handle) : handle_(handle), writer_() { noroute(input); input.onRequest(&PassiveSocketSink::write); + checkThrottle(); } template @@ -77,6 +110,7 @@ prefix_ senf::ppi::module::PassiveSocketSink::PassiveSocketSink(Handle h { noroute(input); input.onRequest(&PassiveSocketSink::write); + checkThrottle(); } //////////////////////////////////////// @@ -88,6 +122,15 @@ prefix_ void senf::ppi::module::PassiveSocketSink::write() writer_(handle_,input()); } +template +prefix_ void senf::ppi::module::PassiveSocketSink::checkThrottle() +{ + if (handle_) + input.unthrottle(); + else + input.throttle(); +} + ///////////////////////////////ct.e//////////////////////////////////////// #undef prefix_