X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FForwardSwitch.cci;h=9447bab19ca0ff640c37e9304bbc946deaa0842c;hb=ee01b9007d97c64d0a34b91a3dc87ad5c5697df5;hp=7b8012a9f544030d184218cbedecbeb78a453e64;hpb=7527fa188b41bd1e1ce1eb55777bfe360eb8373e;p=senf.git diff --git a/PPI/ForwardSwitch.cci b/PPI/ForwardSwitch.cci index 7b8012a..9447bab 100644 --- a/PPI/ForwardSwitch.cci +++ b/PPI/ForwardSwitch.cci @@ -23,35 +23,37 @@ #define prefix_ inline prefix_ senf::ppi::module::ForwardSwitch::ForwardSwitch(bool state) + :forward_(state) { route( input, output ); input.onRequest( &ForwardSwitch::onRequest ); - forward_ = state; } prefix_ void senf::ppi::module::ForwardSwitch::onRequest() { - if(forward_){ - output(input()); - } + if(forward_){ + output.write(input.read()); + } else { + input.read(); // and discard automatically + } } prefix_ bool senf::ppi::module::ForwardSwitch::forward(){ - return forward_; + return forward_; } prefix_ bool senf::ppi::module::ForwardSwitch::forward(bool state){ - forward_ = state; - return state; + forward_ = state; + return state; } prefix_ bool senf::ppi::module::ForwardSwitch::stopForwarding(){ - return forward(false); + return forward(false); } prefix_ bool senf::ppi::module::ForwardSwitch::startForwarding(){ - return forward(true); + return forward(true); } #undef prefix_