X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FModule.cci;h=73865c23fcd3d599b80e1d856a532e3d61e2eb8e;hb=0e83cd2ee1ebc409cf73d8774b01bf01f3df22f4;hp=3f0817d3e1ee7ae3d55aae1cc693ee04aff92579;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/PPI/Module.cci b/senf/PPI/Module.cci index 3f0817d..73865c2 100644 --- a/senf/PPI/Module.cci +++ b/senf/PPI/Module.cci @@ -28,6 +28,9 @@ #include "Connectors.hh" #include "EventManager.hh" #include "ModuleManager.hh" +#include +#include +#include #define prefix_ inline ///////////////////////////////cci.p/////////////////////////////////////// @@ -62,6 +65,21 @@ prefix_ void senf::ppi::module::Module::registerConnector(connector::Connector & } } +prefix_ void senf::ppi::module::Module::unregisterConnector(connector::Connector & connector) +{ + ConnectorRegistry::iterator i (std::find(connectorRegistry_.begin(), connectorRegistry_.end(), + &connector)); + if (i != connectorRegistry_.end()) + connectorRegistry_.erase(i); + + routes_.erase_if(boost::bind(&RouteBase::hasConnector, _1, boost::cref(connector))); +} + +prefix_ void senf::ppi::module::Module::unregisterEvent(EventDescriptor & event) +{ + routes_.erase_if(boost::bind(&RouteBase::hasEvent, _1, boost::cref(event))); +} + prefix_ senf::ppi::RouteBase & senf::ppi::module::Module::addRoute(std::auto_ptr route) { @@ -74,6 +92,9 @@ senf::ppi::module::Module::addRoute(std::auto_ptr route) prefix_ senf::ppi::module::Module::~Module() { + SENF_ASSERT(connectorRegistry_.empty()); + SENF_ASSERT(routes_.empty()); + moduleManager().unregisterModule(*this); }