X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FPPI%2FModule.cci;h=4157922984092d9537fe5463199966815604de38;hb=93d9568d448749dc187e7622b733a4a3caa319df;hp=3f0817d3e1ee7ae3d55aae1cc693ee04aff92579;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/PPI/Module.cci b/senf/PPI/Module.cci index 3f0817d..4157922 100644 --- a/senf/PPI/Module.cci +++ b/senf/PPI/Module.cci @@ -28,14 +28,17 @@ #include "Connectors.hh" #include "EventManager.hh" #include "ModuleManager.hh" +#include +#include +#include #define prefix_ inline -///////////////////////////////cci.p/////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// -/////////////////////////////////////////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // senf::ppi::module::Module -//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // private members prefix_ void senf::ppi::module::Module::v_init() @@ -53,27 +56,21 @@ prefix_ senf::ppi::ModuleManager & senf::ppi::module::Module::moduleManager() return ModuleManager::instance(); } -prefix_ void senf::ppi::module::Module::registerConnector(connector::Connector & connector) +prefix_ void senf::ppi::module::Module::unregisterEvent(EventDescriptor & event) { - if (std::find(connectorRegistry_.begin(), connectorRegistry_.end(), &connector) - == connectorRegistry_.end()) { - connectorRegistry_.push_back(&connector); - connector.setModule(*this); - } + routes_.erase_if(boost::bind(&RouteBase::hasEvent, _1, boost::cref(event))); } -prefix_ senf::ppi::RouteBase & -senf::ppi::module::Module::addRoute(std::auto_ptr route) -{ - routes_.push_back(route.release()); - return routes_.back(); -} - -//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // public members prefix_ senf::ppi::module::Module::~Module() { + SENF_ASSERT(connectorRegistry_.empty(), + "Internal failure: connectors still registered in Module destructor ??"); + SENF_ASSERT(routes_.empty(), + "internal failure: routes still registered in Module destructor ??"); + moduleManager().unregisterModule(*this); } @@ -89,7 +86,7 @@ prefix_ senf::ClockService::clock_type senf::ppi::module::Module::now() return eventManager().now(); } -//////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// // protected members prefix_ senf::ppi::module::Module::Module() @@ -97,18 +94,12 @@ prefix_ senf::ppi::module::Module::Module() moduleManager().registerModule(*this); } -prefix_ void senf::ppi::module::Module::noroute(connector::Connector & connector) -{ - registerConnector(connector); - connector.setModule(*this); -} - prefix_ void senf::ppi::module::Module::destroy() { eventManager().destroyModule(*this); } -///////////////////////////////cci.e/////////////////////////////////////// +//-///////////////////////////////////////////////////////////////////////////////////////////////// #undef prefix_