X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FConnectors.cci;h=3f24b5d99521d0b84f041ea4c9223141777d5a03;hb=81f84badf27b66dbadec9890646ca1193e998505;hp=12c14a11498162609ec02ee60f8de2413866f671;hpb=28e21cc5680c097e7daed8c412ee32cf26a75a60;p=senf.git diff --git a/PPI/Connectors.cci b/PPI/Connectors.cci index 12c14a1..3f24b5d 100644 --- a/PPI/Connectors.cci +++ b/PPI/Connectors.cci @@ -36,6 +36,7 @@ prefix_ senf::ppi::connector::Connector & senf::ppi::connector::Connector::peer() const { + // The connector is not connected SENF_ASSERT(peer_); return *peer_; } @@ -43,6 +44,8 @@ prefix_ senf::ppi::connector::Connector & senf::ppi::connector::Connector::peer( prefix_ senf::ppi::module::Module & senf::ppi::connector::Connector::module() const { + // The connector is not registered in the module -> probably a route() or noroute() statement is + // missing. SENF_ASSERT(module_); return *module_; } @@ -56,8 +59,11 @@ prefix_ senf::ppi::connector::Connector::Connector() prefix_ senf::ppi::connector::Connector::~Connector() { - if (connected()) + if (connected()) { + Connector & peer (*peer_); peer_->peer_ = 0; + peer.v_init(); + } } prefix_ bool senf::ppi::connector::Connector::connected() @@ -74,11 +80,6 @@ prefix_ void senf::ppi::connector::Connector::setModule(module::Module & module) module_ = &module; } -prefix_ void senf::ppi::connector::Connector::init() -{ - v_init(); -} - /////////////////////////////////////////////////////////////////////////// // senf::ppi::connector::PassiveConnector @@ -161,6 +162,7 @@ prefix_ senf::ppi::connector::PassiveConnector::PassiveConnector() prefix_ void senf::ppi::connector::PassiveConnector::emit() { + // No event callback has been registered (onEvent() call missing) SENF_ASSERT(callback_); if (!throttled()) callback_(); @@ -229,6 +231,7 @@ senf::ppi::connector::InputConnector::end() prefix_ senf::Packet senf::ppi::connector::InputConnector::peek() const { + // Cannot peek() head of empty queue SENF_ASSERT( ! queue_.empty() ); return queue_.back(); } @@ -255,7 +258,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(); @@ -270,13 +273,13 @@ 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) { 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); }