moved statistics classes from NetEmu to SENF
[senf.git] / PPI / Module.cci
index 04ecc61..de184f7 100644 (file)
@@ -1,8 +1,8 @@
 // $Id$
 //
-// Copyright (C) 2007 
-// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS)
-// Kompetenzzentrum fuer Satelitenkommunikation (SatCom)
+// Copyright (C) 2007
+// Fraunhofer Institute for Open Communication Systems (FOKUS)
+// Competence Center NETwork research (NET), St. Augustin, GERMANY
 //     Stefan Bund <g0dil@berlios.de>
 //
 // This program is free software; you can redistribute it and/or modify
@@ -27,6 +27,7 @@
 #include "Route.hh"
 #include "Connectors.hh"
 #include "EventManager.hh"
+#include "ModuleManager.hh"
 
 #define prefix_ inline
 ///////////////////////////////cci.p///////////////////////////////////////
 ///////////////////////////////////////////////////////////////////////////
 // senf::ppi::module::Module
 
-prefix_ void senf::ppi::module::Module::noroute(connector::Connector & connector)
-{
-    registerConnector(connector);
-    connector.setModule(*this);
-}
-
-prefix_ boost::posix_time::ptime senf::ppi::module::Module::eventTime()
-{
-    return eventManager().eventTime();
-}
-
 ////////////////////////////////////////
-// protected members
+// private members
 
-prefix_ senf::ppi::module::Module::Module()
+prefix_ void senf::ppi::module::Module::v_init()
 {}
 
-////////////////////////////////////////
-// private members
-
 prefix_ senf::ppi::EventManager & senf::ppi::module::Module::eventManager()
+    const
 {
     return EventManager::instance();
 }
 
+prefix_ senf::ppi::ModuleManager & senf::ppi::module::Module::moduleManager()
+    const
+{
+    return ModuleManager::instance();
+}
+
 prefix_ void senf::ppi::module::Module::registerConnector(connector::Connector & connector)
 {
     connectorRegistry_.push_back(&connector);
@@ -72,6 +66,45 @@ senf::ppi::module::Module::addRoute(std::auto_ptr<RouteBase> route)
     return routes_.back();
 }
 
+////////////////////////////////////////
+// public members
+
+prefix_ senf::ppi::module::Module::~Module()
+{
+    moduleManager().unregisterModule(*this);
+}
+
+prefix_ senf::ClockService::clock_type senf::ppi::module::Module::time()
+    const
+{
+    return eventManager().time();
+}
+
+prefix_ senf::ClockService::clock_type senf::ppi::module::Module::now()
+    const
+{
+    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_