X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FConnectors.cci;h=3f9ceeecdda5a9a18fbdbc031d23d03ee7b257e2;hb=6dfb1a69bf12258f6f8117f5e4c257c4e0367a29;hp=ec587ceffa54580e0a2c862ea3c5498d8b5fadbc;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/PPI/Connectors.cci b/senf/PPI/Connectors.cci index ec587ce..3f9ceee 100644 --- a/senf/PPI/Connectors.cci +++ b/senf/PPI/Connectors.cci @@ -24,8 +24,9 @@ \brief Connectors inline non-template implementation */ // Custom includes -#include "../Utils/TypeInfo.hh" -#include "../Utils/senfassert.hh" +#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()