prefix_ senf::ppi::connector::Connector::~Connector()
{
- if (peer_)
+ if (connected())
peer_->peer_ = 0;
}
+prefix_ bool senf::ppi::connector::Connector::connected()
+ const
+{
+ return peer_;
+}
+
////////////////////////////////////////
// private members
module_ = &module;
}
+prefix_ void senf::ppi::connector::Connector::init()
+{
+ v_init();
+}
+
///////////////////////////////////////////////////////////////////////////
// senf::ppi::connector::PassiveConnector
prefix_ void senf::ppi::connector::PassiveConnector::emitThrottle()
{
- peer().notifyThrottle();
+ if (connected())
+ peer().notifyThrottle();
}
prefix_ void senf::ppi::connector::PassiveConnector::emitUnthrottle()
{
- peer().notifyUnthrottle();
- v_unthrottleEvent();
+ if (connected()) {
+ peer().notifyUnthrottle();
+ v_unthrottleEvent();
+ }
}
prefix_ void senf::ppi::connector::PassiveConnector::notifyThrottle()
remoteThrottled_ = true;
}
-prefix_ void senf::ppi::connector::PassiveConnector::v_unthrottleEvent()
-{}
-
prefix_ void senf::ppi::connector::PassiveConnector::registerRoute(ForwardingRoute & route)
{
routes_.push_back(&route);
prefix_ bool senf::ppi::connector::ActiveConnector::throttled()
const
{
- return peer().throttled();
+ return ! connected() || peer().throttled();
}
////////////////////////////////////////
// protected members
prefix_ senf::ppi::connector::ActiveConnector::ActiveConnector()
- : throttleCallback_(), unthrottleCallback_(), notifyRoutes_()
+ : throttleCallback_(), unthrottleCallback_(), notifyRoutes_(), throttled_(false)
{}
///////////////////////////////////////////////////////////////////////////
prefix_ void senf::ppi::connector::OutputConnector::operator()(Packet p)
{
- peer().enqueue(p);
+ if (connected())
+ peer().enqueue(p);
}
prefix_ void senf::ppi::connector::OutputConnector::write(Packet p)
prefix_ bool senf::ppi::connector::GenericActiveInput::boolean_test()
const
{
- return ! empty() || ! peer().throttled();
+ return ! empty() || (connected() && ! peer().throttled());
}
prefix_ void senf::ppi::connector::GenericActiveInput::request()
{
- peer().emit();
+ if (connected())
+ peer().emit();
}
prefix_ senf::ppi::connector::GenericActiveInput::GenericActiveInput()
prefix_ bool senf::ppi::connector::GenericActiveOutput::boolean_test()
const
{
- return ! peer().throttled();
+ return connected() && ! peer().throttled();
}
prefix_ void senf::ppi::connector::GenericActiveOutput::connect(GenericPassiveInput & target)