#include "Route.hh"
#include "Connectors.hh"
#include "EventManager.hh"
-#include "ModuleManager.hh"
#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>
#include <algorithm>
#define prefix_ inline
-///////////////////////////////cci.p///////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
-///////////////////////////////////////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// senf::ppi::module::Module
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// private members
prefix_ void senf::ppi::module::Module::v_init()
return ModuleManager::instance();
}
-prefix_ void senf::ppi::module::Module::registerConnector(connector::Connector & connector)
-{
- if (std::find(connectorRegistry_.begin(), connectorRegistry_.end(), &connector)
- == connectorRegistry_.end()) {
- connectorRegistry_.push_back(&connector);
- connector.setModule(*this);
- }
-}
-
-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<RouteBase> route)
-{
- routes_.push_back(route.release());
- return routes_.back();
-}
-
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// public members
prefix_ senf::ppi::module::Module::~Module()
{
- SENF_ASSERT(connectorRegistry_.empty());
- SENF_ASSERT(routes_.empty());
+ 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);
}
return eventManager().now();
}
-////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
// protected members
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_
\f