const
{
// The connector is not connected
- SENF_ASSERT(peer_);
+ SENF_ASSERT(peer_ && "senf::ppi::connect() call missing");
return *peer_;
}
{
// The connector is not registered in the module -> probably a route() or noroute() statement is
// missing.
- SENF_ASSERT(module_);
+ 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
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();
if (!throttled()) {
nativeThrottled_ = true;
emitThrottle();
- }
+ } else
+ nativeThrottled_ = true;
}
prefix_ void senf::ppi::connector::PassiveConnector::unthrottle()
prefix_ void senf::ppi::connector::PassiveConnector::emit()
{
- // No event callback has been registered (onEvent() call missing)
- 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");
}
///////////////////////////////////////////////////////////////////////////
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();
}
prefix_ void senf::ppi::connector::OutputConnector::operator()(Packet const & p)
{
+ trace(p, "OUT");
if (connected())
peer().enqueue(p);
}