X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FConnectors.cci;h=af21cf9e9332ed81078fcbcba495dd7845cdb6fd;hb=93d9568d448749dc187e7622b733a4a3caa319df;hp=ec587ceffa54580e0a2c862ea3c5498d8b5fadbc;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/PPI/Connectors.cci b/senf/PPI/Connectors.cci index ec587ce..af21cf9 100644 --- a/senf/PPI/Connectors.cci +++ b/senf/PPI/Connectors.cci @@ -24,20 +24,29 @@ \brief Connectors inline non-template implementation */ // Custom includes -#include "../Utils/TypeInfo.hh" -#include "../Utils/senfassert.hh" +#include +#include +#include "Module.hh" #define prefix_ inline -///////////////////////////////cci.p/////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////// +#ifdef SENF_PPI_NOTRACE +# define SENF_PPI_THROTTLE_TRACE(label, type) +# define SENF_PPI_TRACE(packet, label) +#else +# define SENF_PPI_THROTTLE_TRACE(label, type) throttleTrace(label, type) +# define SENF_PPI_TRACE(packet, label) trace(packet, label) +#endif + +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::ppi::connector::Connector prefix_ senf::ppi::connector::Connector & senf::ppi::connector::Connector::peer() const { // The connector is not connected - SENF_ASSERT(peer_ && "senf::ppi::connect() call missing"); + SENF_ASSERT(peer_, "senf::ppi::connect() call missing"); return *peer_; } @@ -46,7 +55,7 @@ prefix_ senf::ppi::module::Module & senf::ppi::connector::Connector::module() { // The connector is not registered in the module -> probably a route() or noroute() statement is // missing. - SENF_ASSERT(module_ && "Connector not registered: Missing route() or noroute()"); + SENF_ASSERT(module_, "Connector not registered: Missing route() or noroute()"); return *module_; } @@ -60,43 +69,27 @@ prefix_ senf::ppi::connector::Connector::TraceState senf::ppi::connector::Connec return traceState_; } -//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // protected members prefix_ senf::ppi::connector::Connector::Connector() : peer_(), module_() {} -prefix_ senf::ppi::connector::Connector::~Connector() -{ - if (connected()) { - Connector & peer (*peer_); - peer_->peer_ = 0; - peer.v_init(); - } -} - prefix_ bool senf::ppi::connector::Connector::connected() const { return peer_; } -//////////////////////////////////////// -// private members - -prefix_ void senf::ppi::connector::Connector::setModule(module::Module & module) -{ - module_ = &module; -} - -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::ppi::connector::PassiveConnector prefix_ senf::ppi::connector::ActiveConnector & senf::ppi::connector::PassiveConnector::peer() const { - return dynamic_cast(Connector::peer()); + SENF_ASSERT(peer_, "senf::ppi::connect() call missing"); + return *peer_; } prefix_ bool senf::ppi::connector::PassiveConnector::throttled() @@ -105,19 +98,19 @@ prefix_ bool senf::ppi::connector::PassiveConnector::throttled() return nativeThrottled_ || remoteThrottled_; } -//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // private members prefix_ void senf::ppi::connector::PassiveConnector::emitThrottle() { - throttleTrace("OUT", "throttle"); + SENF_PPI_THROTTLE_TRACE("OUT", "throttle"); if (connected()) peer().notifyThrottle(); } prefix_ void senf::ppi::connector::PassiveConnector::emitUnthrottle() { - throttleTrace("OUT", "unthrottle"); + SENF_PPI_THROTTLE_TRACE("OUT", "unthrottle"); if (connected()) { peer().notifyUnthrottle(); v_unthrottleEvent(); @@ -134,12 +127,7 @@ prefix_ void senf::ppi::connector::PassiveConnector::notifyThrottle() remoteThrottled_ = true; } -prefix_ void senf::ppi::connector::PassiveConnector::registerRoute(ForwardingRoute & route) -{ - routes_.push_back(&route); -} - -// public members +// public members prefix_ bool senf::ppi::connector::PassiveConnector::nativeThrottled() const @@ -166,7 +154,7 @@ prefix_ void senf::ppi::connector::PassiveConnector::unthrottle() } -//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // protected members prefix_ senf::ppi::connector::PassiveConnector::PassiveConnector() @@ -176,20 +164,22 @@ prefix_ senf::ppi::connector::PassiveConnector::PassiveConnector() prefix_ void senf::ppi::connector::PassiveConnector::emit() { // No event callback has been registered (onRequest() call missing) - SENF_ASSERT(callback_ && "senf::ppi::connector::PassiveConnector: missing onRequest()"); - if (!throttled()) + SENF_ASSERT(callback_, "senf::ppi::connector::PassiveConnector: missing onRequest()"); + if (!throttled()) { callback_(); - else - throttleTrace("IN ", "queueing packet"); + } else { + SENF_PPI_THROTTLE_TRACE("IN ", "queueing packet"); + } } -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::ppi::connector::ActiveConnector prefix_ senf::ppi::connector::PassiveConnector & senf::ppi::connector::ActiveConnector::peer() const { - return dynamic_cast(Connector::peer()); + SENF_ASSERT(peer_, "senf::ppi::connect() call missing"); + return *peer_; } prefix_ void senf::ppi::connector::ActiveConnector::onThrottle() @@ -208,14 +198,14 @@ prefix_ bool senf::ppi::connector::ActiveConnector::throttled() return ! connected() || peer().throttled(); } -//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // protected members prefix_ senf::ppi::connector::ActiveConnector::ActiveConnector() : throttleCallback_(), unthrottleCallback_(), notifyRoutes_(), throttled_(false) {} -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::ppi::connector::InputConnector prefix_ senf::Packet senf::ppi::connector::InputConnector::read() @@ -226,7 +216,8 @@ prefix_ senf::Packet senf::ppi::connector::InputConnector::read() prefix_ senf::ppi::connector::OutputConnector & senf::ppi::connector::InputConnector::peer() const { - return dynamic_cast(Connector::peer()); + SENF_ASSERT(peer_, "senf::ppi::connect() call missing"); + return *peer_; } prefix_ senf::ppi::connector::InputConnector::queue_iterator @@ -247,7 +238,7 @@ prefix_ senf::Packet senf::ppi::connector::InputConnector::peek() const { // Cannot peek() head of empty queue - SENF_ASSERT( ! queue_.empty() && + SENF_ASSERT( ! queue_.empty(), "senf::ppi::connector::InputConnector: cannot call peek() on empty queue" ); return queue_.back(); } @@ -265,13 +256,13 @@ prefix_ bool senf::ppi::connector::InputConnector::empty() return queue_.empty(); } -//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // protected members prefix_ senf::ppi::connector::InputConnector::InputConnector() {} -//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // private members prefix_ void senf::ppi::connector::InputConnector::enqueue(Packet const & p) @@ -280,18 +271,19 @@ prefix_ void senf::ppi::connector::InputConnector::enqueue(Packet const & p) v_enqueueEvent(); } -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::ppi::connector::OutputConnector prefix_ senf::ppi::connector::InputConnector & senf::ppi::connector::OutputConnector::peer() const { - return dynamic_cast(Connector::peer()); + SENF_ASSERT(peer_, "senf::ppi::connect() call missing"); + return *peer_; } prefix_ void senf::ppi::connector::OutputConnector::operator()(Packet const & p) { - trace(p, "OUT"); + SENF_PPI_TRACE(p, "OUT"); if (connected()) peer().enqueue(p); } @@ -301,13 +293,13 @@ prefix_ void senf::ppi::connector::OutputConnector::write(Packet const & p) operator()(p); } -//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // protected members prefix_ senf::ppi::connector::OutputConnector::OutputConnector() {} -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::ppi::connector::GenericPassiveInput prefix_ senf::ppi::connector::GenericPassiveInput::GenericPassiveInput() @@ -317,7 +309,8 @@ prefix_ senf::ppi::connector::GenericPassiveInput::GenericPassiveInput() prefix_ senf::ppi::connector::GenericActiveOutput & senf::ppi::connector::GenericPassiveInput::peer() const { - return dynamic_cast(Connector::peer()); + SENF_ASSERT(peer_, "senf::ppi::connect() call missing"); + return *peer_; } prefix_ bool senf::ppi::connector::GenericPassiveInput::boolean_test() @@ -326,13 +319,14 @@ prefix_ bool senf::ppi::connector::GenericPassiveInput::boolean_test() return ! empty(); } -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::ppi::connector::GenericPassiveOutput prefix_ senf::ppi::connector::GenericActiveInput & senf::ppi::connector::GenericPassiveOutput::peer() const { - return dynamic_cast(Connector::peer()); + SENF_ASSERT(peer_, "senf::ppi::connect() call missing"); + return *peer_; } prefix_ bool senf::ppi::connector::GenericPassiveOutput::boolean_test() @@ -349,13 +343,14 @@ prefix_ void senf::ppi::connector::GenericPassiveOutput::connect(GenericActiveIn prefix_ senf::ppi::connector::GenericPassiveOutput::GenericPassiveOutput() {} -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::ppi::connector::GenericActiveInput prefix_ senf::ppi::connector::GenericPassiveOutput & senf::ppi::connector::GenericActiveInput::peer() const { - return dynamic_cast(Connector::peer()); + SENF_ASSERT(peer_, "senf::ppi::connect() call missing"); + return *peer_; } prefix_ bool senf::ppi::connector::GenericActiveInput::boolean_test() @@ -373,13 +368,14 @@ prefix_ void senf::ppi::connector::GenericActiveInput::request() prefix_ senf::ppi::connector::GenericActiveInput::GenericActiveInput() {} -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::ppi::connector::GenericActiveOutput prefix_ senf::ppi::connector::GenericPassiveInput & senf::ppi::connector::GenericActiveOutput::peer() const { - return dynamic_cast(Connector::peer()); + SENF_ASSERT(peer_, "senf::ppi::connect() call missing"); + return *peer_; } prefix_ bool senf::ppi::connector::GenericActiveOutput::boolean_test() @@ -396,7 +392,7 @@ prefix_ void senf::ppi::connector::GenericActiveOutput::connect(GenericPassiveIn prefix_ senf::ppi::connector::GenericActiveOutput::GenericActiveOutput() {} -///////////////////////////////cci.e/////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// #undef prefix_