X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FConnectors.cci;h=ec587ceffa54580e0a2c862ea3c5498d8b5fadbc;hb=d5a72d0b3f6fee56dba6de1c54cafb448ebe3457;hp=089600183fc06e55b7ef338af081ebfb92259df4;hpb=c7ddbbb0bc014bdfe6daef91e2d1c512d77e9fff;p=senf.git diff --git a/PPI/Connectors.cci b/PPI/Connectors.cci index 0896001..ec587ce 100644 --- a/PPI/Connectors.cci +++ b/PPI/Connectors.cci @@ -36,17 +36,30 @@ prefix_ senf::ppi::connector::Connector & senf::ppi::connector::Connector::peer() const { - SENF_ASSERT(peer_); + // The connector is not connected + SENF_ASSERT(peer_ && "senf::ppi::connect() call missing"); return *peer_; } prefix_ senf::ppi::module::Module & senf::ppi::connector::Connector::module() const { - SENF_ASSERT(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()"); return *module_; } +prefix_ void senf::ppi::connector::Connector::tracing(TraceState state) +{ + traceState_ = state; +} + +prefix_ senf::ppi::connector::Connector::TraceState senf::ppi::connector::Connector::tracing() +{ + return traceState_; +} + //////////////////////////////////////// // protected members @@ -97,12 +110,14 @@ prefix_ bool senf::ppi::connector::PassiveConnector::throttled() prefix_ void senf::ppi::connector::PassiveConnector::emitThrottle() { + throttleTrace("OUT", "throttle"); if (connected()) peer().notifyThrottle(); } prefix_ void senf::ppi::connector::PassiveConnector::emitUnthrottle() { + throttleTrace("OUT", "unthrottle"); if (connected()) { peer().notifyUnthrottle(); v_unthrottleEvent(); @@ -137,7 +152,8 @@ prefix_ void senf::ppi::connector::PassiveConnector::throttle() if (!throttled()) { nativeThrottled_ = true; emitThrottle(); - } + } else + nativeThrottled_ = true; } prefix_ void senf::ppi::connector::PassiveConnector::unthrottle() @@ -159,9 +175,12 @@ prefix_ senf::ppi::connector::PassiveConnector::PassiveConnector() prefix_ void senf::ppi::connector::PassiveConnector::emit() { - SENF_ASSERT(callback_); + // No event callback has been registered (onRequest() call missing) + SENF_ASSERT(callback_ && "senf::ppi::connector::PassiveConnector: missing onRequest()"); if (!throttled()) callback_(); + else + throttleTrace("IN ", "queueing packet"); } /////////////////////////////////////////////////////////////////////////// @@ -227,7 +246,9 @@ senf::ppi::connector::InputConnector::end() prefix_ senf::Packet senf::ppi::connector::InputConnector::peek() const { - SENF_ASSERT( ! queue_.empty() ); + // Cannot peek() head of empty queue + SENF_ASSERT( ! queue_.empty() && + "senf::ppi::connector::InputConnector: cannot call peek() on empty queue" ); return queue_.back(); } @@ -253,7 +274,7 @@ prefix_ senf::ppi::connector::InputConnector::InputConnector() //////////////////////////////////////// // private members -prefix_ void senf::ppi::connector::InputConnector::enqueue(Packet p) +prefix_ void senf::ppi::connector::InputConnector::enqueue(Packet const & p) { queue_.push_front(p); v_enqueueEvent(); @@ -268,13 +289,14 @@ prefix_ senf::ppi::connector::InputConnector & senf::ppi::connector::OutputConne return dynamic_cast(Connector::peer()); } -prefix_ void senf::ppi::connector::OutputConnector::operator()(Packet p) +prefix_ void senf::ppi::connector::OutputConnector::operator()(Packet const & p) { + trace(p, "OUT"); if (connected()) peer().enqueue(p); } -prefix_ void senf::ppi::connector::OutputConnector::write(Packet p) +prefix_ void senf::ppi::connector::OutputConnector::write(Packet const & p) { operator()(p); }