X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FDebugModules.cci;h=132632675c1ec8c636603f13d42ec620e5dfbd7b;hb=5443435c4c2b6e4386c5334b5b8358273f2bae93;hp=278aac3788c171fb277188e9c82114bc4a751970;hpb=550a30f99f2edbe72434c1b5f2a225320d0ef4ca;p=senf.git diff --git a/PPI/DebugModules.cci b/PPI/DebugModules.cci index 278aac3..1326326 100644 --- a/PPI/DebugModules.cci +++ b/PPI/DebugModules.cci @@ -1,8 +1,8 @@ // $Id$ // -// Copyright (C) 2007 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) +// Copyright (C) 2007 +// 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,51 +24,63 @@ \brief DebugModules inline non-template implementation */ // Custom includes +#include "../Utils/senfassert.hh" +#include "Setup.hh" #define prefix_ inline ///////////////////////////////cci.p/////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// -// senf::ppi::module::debug::ActivePacketSource +// senf::ppi::module::debug::ActiveSource -prefix_ senf::ppi::module::debug::ActivePacketSource::ActivePacketSource() +prefix_ senf::ppi::module::debug::ActiveSource::ActiveSource() { noroute(output); } -prefix_ void senf::ppi::module::debug::ActivePacketSource::submit(Packet packet) +prefix_ void senf::ppi::module::debug::ActiveSource::submit(Packet const & packet) { output(packet); } -prefix_ bool senf::ppi::module::debug::ActivePacketSource::boolean_test() +prefix_ bool senf::ppi::module::debug::ActiveSource::boolean_test() const { return output; } /////////////////////////////////////////////////////////////////////////// -// senf::ppi::module::debug::PassivePacketSource +// senf::ppi::module::debug::PassiveSource -prefix_ senf::ppi::module::debug::PassivePacketSource::PassivePacketSource() +prefix_ senf::ppi::module::debug::PassiveSource::PassiveSource() { noroute(output); - output.onRequest(&PassivePacketSource::request); + output.onRequest(&PassiveSource::request); } -prefix_ void senf::ppi::module::debug::PassivePacketSource::submit(Packet packet) +prefix_ void senf::ppi::module::debug::PassiveSource::throttle() +{ + output.throttle(); +} + +prefix_ void senf::ppi::module::debug::PassiveSource::unthrottle() +{ + output.unthrottle(); +} + +prefix_ void senf::ppi::module::debug::PassiveSource::submit(Packet const & packet) { packets_.push_back(packet); output.unthrottle(); } -prefix_ bool senf::ppi::module::debug::PassivePacketSource::empty() +prefix_ bool senf::ppi::module::debug::PassiveSource::empty() { return packets_.empty(); } -prefix_ senf::ppi::module::debug::PassivePacketSource::size_type -senf::ppi::module::debug::PassivePacketSource::size() +prefix_ senf::ppi::module::debug::PassiveSource::size_type +senf::ppi::module::debug::PassiveSource::size() { return packets_.size(); } @@ -76,72 +88,74 @@ senf::ppi::module::debug::PassivePacketSource::size() //////////////////////////////////////// // private members -prefix_ void senf::ppi::module::debug::PassivePacketSource::request() +prefix_ void senf::ppi::module::debug::PassiveSource::v_init() { - BOOST_ASSERT( ! packets_.empty() ); - output(packets_.front()); - packets_.pop_front(); - if (packets_.empty()) + if (empty()) output.throttle(); } -prefix_ void senf::ppi::module::debug::PassivePacketSource::init() -{ - output.throttle(); -} - /////////////////////////////////////////////////////////////////////////// -// senf::ppi::module::debug::ActivePacketSink +// senf::ppi::module::debug::ActiveSink -prefix_ senf::ppi::module::debug::ActivePacketSink::ActivePacketSink() +prefix_ senf::ppi::module::debug::ActiveSink::ActiveSink() { noroute(input); } -prefix_ senf::Packet senf::ppi::module::debug::ActivePacketSink::request() +prefix_ senf::Packet senf::ppi::module::debug::ActiveSink::request() { return input(); } -prefix_ bool senf::ppi::module::debug::ActivePacketSink::boolean_test() +prefix_ bool senf::ppi::module::debug::ActiveSink::boolean_test() const { return input; } /////////////////////////////////////////////////////////////////////////// -// senf::ppi::module::debug::PassivePacketSink +// senf::ppi::module::debug::PassiveSink -prefix_ senf::ppi::module::debug::PassivePacketSink::PassivePacketSink() +prefix_ senf::ppi::module::debug::PassiveSink::PassiveSink() { noroute(input); - input.onRequest(&PassivePacketSink::request); + input.onRequest(&PassiveSink::request); } -prefix_ bool senf::ppi::module::debug::PassivePacketSink::empty() +prefix_ void senf::ppi::module::debug::PassiveSink::throttle() +{ + input.throttle(); +} + +prefix_ void senf::ppi::module::debug::PassiveSink::unthrottle() +{ + input.unthrottle(); +} + +prefix_ bool senf::ppi::module::debug::PassiveSink::empty() { return packets_.empty(); } -prefix_ senf::ppi::module::debug::PassivePacketSink::size_type -senf::ppi::module::debug::PassivePacketSink::size() +prefix_ senf::ppi::module::debug::PassiveSink::size_type +senf::ppi::module::debug::PassiveSink::size() { return packets_.size(); } -prefix_ senf::ppi::module::debug::PassivePacketSink::iterator -senf::ppi::module::debug::PassivePacketSink::begin() +prefix_ senf::ppi::module::debug::PassiveSink::iterator +senf::ppi::module::debug::PassiveSink::begin() { return packets_.begin(); } -prefix_ senf::ppi::module::debug::PassivePacketSink::iterator -senf::ppi::module::debug::PassivePacketSink::end() +prefix_ senf::ppi::module::debug::PassiveSink::iterator +senf::ppi::module::debug::PassiveSink::end() { return packets_.end(); } -prefix_ senf::Packet senf::ppi::module::debug::PassivePacketSink::front() +prefix_ senf::Packet senf::ppi::module::debug::PassiveSink::front() { if (empty()) return Packet(); @@ -149,25 +163,89 @@ prefix_ senf::Packet senf::ppi::module::debug::PassivePacketSink::front() return packets_.front(); } -prefix_ senf::Packet senf::ppi::module::debug::PassivePacketSink::pop_front() +prefix_ senf::Packet senf::ppi::module::debug::PassiveSink::pop_front() { Packet p (front()); - if (p) + if (p) packets_.pop_front(); return p; } -prefix_ void senf::ppi::module::debug::PassivePacketSink::clear() +prefix_ void senf::ppi::module::debug::PassiveSink::clear() { packets_.erase(packets_.begin(), packets_.end()); } -//////////////////////////////////////// -// private members +/////////////////////////////////////////////////////////////////////////// +// senf::ppi::module::debug::ActiveFeederSource + +prefix_ senf::ppi::module::debug::ActiveFeederSource::ActiveFeederSource() + : output(feeder.output) +{ + ppi::connect(source,feeder); +} + +prefix_ void senf::ppi::module::debug::ActiveFeederSource::submit(Packet packet) +{ + source.submit(packet); +} + +prefix_ bool senf::ppi::module::debug::ActiveFeederSource::empty() +{ + return source.empty(); +} + +prefix_ senf::ppi::module::debug::ActiveFeederSource::size_type +senf::ppi::module::debug::ActiveFeederSource::size() +{ + return source.size(); +} + +/////////////////////////////////////////////////////////////////////////// +// senf::ppi::module::debug::ActiveFeederSink + +prefix_ senf::ppi::module::debug::ActiveFeederSink::ActiveFeederSink() + : input(feeder.input) +{ + ppi::connect(feeder, sink); +} + +prefix_ bool senf::ppi::module::debug::ActiveFeederSink::empty() +{ + return sink.empty(); +} + +prefix_ senf::ppi::module::debug::ActiveFeederSink::size_type +senf::ppi::module::debug::ActiveFeederSink::size() +{ + return sink.size(); +} + +prefix_ senf::ppi::module::debug::ActiveFeederSink::iterator +senf::ppi::module::debug::ActiveFeederSink::begin() +{ + return sink.begin(); +} + +prefix_ senf::ppi::module::debug::ActiveFeederSink::iterator +senf::ppi::module::debug::ActiveFeederSink::end() +{ + return sink.end(); +} + +prefix_ senf::Packet senf::ppi::module::debug::ActiveFeederSink::front() +{ + return sink.front(); +} + +prefix_ senf::Packet senf::ppi::module::debug::ActiveFeederSink::pop_front() +{ + return sink.pop_front(); +} -prefix_ void senf::ppi::module::debug::PassivePacketSink::request() +prefix_ void senf::ppi::module::debug::ActiveFeederSink::clear() { - packets_.push_back(input()); + sink.clear(); } ///////////////////////////////cci.e///////////////////////////////////////