prefix_ void senf::ppi::connector::Connector::connect(Connector & target)
{
// The connector is not registered -> route() or noroute() statement missing
- SENF_ASSERT( module_ );
+ SENF_ASSERT( module_ &&
+ "senf::ppi::connector::Connector::connect(): (source) "
+ "Missing route() or noroute()" );
// The connector is already connected
- SENF_ASSERT( ! peer_ );
+ SENF_ASSERT( ! peer_ &&
+ "senf::ppi::connector::Connector::connect(): (source) "
+ "duplicate connection" );
// The target connector is not registered -> route() or noroute() statement missing
- SENF_ASSERT( target.module_ );
+ SENF_ASSERT( target.module_ &&
+ "senf::ppi::connector::Connector::connect(): (target) "
+ "Missing route() or noroute()" );
// The target connector is already connected
- SENF_ASSERT( ! target.peer_ );
+ SENF_ASSERT( ! target.peer_ &&
+ "senf::ppi::connector::Connector::connect(): (target) "
+ "duplicate connection" );
if (! (packetTypeID() == typeid(void) ||
target.packetTypeID() == typeid(void) ||
packetTypeID() == target.packetTypeID()) )
prefix_ void senf::ppi::connector::Connector::disconnect()
{
// Cannot disconnected a non-connected connector
- SENF_ASSERT( peer_ );
+ SENF_ASSERT( peer_ &&
+ "senf::ppi::connector::Connector::disconnect(): Not connected" );
Connector & peer (*peer_);
peer_ = 0;
peer.peer_ = 0;
prefix_ void senf::ppi::connector::PassiveConnector::notifyUnthrottle()
{
- if (throttled() && !nativeThrottled_) {
- Routes::const_iterator i (routes_.begin());
- Routes::const_iterator const i_end (routes_.end());
- for (; i != i_end; ++i)
- if ((*i)->throttled())
- break;
- if (i == i_end) {
- remoteThrottled_ = false;
- emitUnthrottle();
- }
- }
- else
+ if (std::find_if(routes_.begin(), routes_.end(),
+ boost::bind(&ForwardingRoute::throttled, _1)) == routes_.end()) {
remoteThrottled_ = false;
+ if (!nativeThrottled_)
+ emitUnthrottle();
+ }
}
///////////////////////////////////////////////////////////////////////////