X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FConnectors.cci;h=3f9ceeecdda5a9a18fbdbc031d23d03ee7b257e2;hb=0e83cd2ee1ebc409cf73d8774b01bf01f3df22f4;hp=f133b97d71db8f36b3ccc0c17e11d6c5e1233a02;hpb=26610f603ebdd465307b9621f532c1fe19fd5571;p=senf.git diff --git a/senf/PPI/Connectors.cci b/senf/PPI/Connectors.cci index f133b97..3f9ceee 100644 --- a/senf/PPI/Connectors.cci +++ b/senf/PPI/Connectors.cci @@ -26,6 +26,7 @@ // Custom includes #include #include +#include "Module.hh" #define prefix_ inline ///////////////////////////////cci.p/////////////////////////////////////// @@ -72,7 +73,9 @@ prefix_ senf::ppi::connector::Connector::~Connector() if (connected()) { Connector & peer (*peer_); peer_->peer_ = 0; - peer.v_init(); + if (! peer.initializationScheduled()) + peer.enqueueInitializable(); + peer.v_disconnected(); } } @@ -82,6 +85,12 @@ prefix_ bool senf::ppi::connector::Connector::connected() return peer_; } +prefix_ void senf::ppi::connector::Connector::unregisterConnector() +{ + if (module_) + module_->unregisterConnector(*this); +} + //////////////////////////////////////// // private members @@ -139,6 +148,13 @@ prefix_ void senf::ppi::connector::PassiveConnector::registerRoute(ForwardingRou routes_.push_back(&route); } +prefix_ void senf::ppi::connector::PassiveConnector::unregisterRoute(ForwardingRoute & route) +{ + Routes::iterator i (std::find(routes_.begin(), routes_.end(), &route)); + if (i != routes_.end()) + routes_.erase(i); +} + // public members prefix_ bool senf::ppi::connector::PassiveConnector::nativeThrottled()