X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FModuleManager.cc;h=f72cab1812e5fb4426acc9ca8c5bb4867ccdd9d0;hb=a1fdb7bb122f0b05be809a922d4b7ef5e125fa67;hp=bda5e66d83f298bcc4c15ec46cf9cb3278c10412;hpb=0327b3f303ea2a61d44a30bfaac022874dcf2a0d;p=senf.git diff --git a/PPI/ModuleManager.cc b/PPI/ModuleManager.cc index bda5e66..f72cab1 100644 --- a/PPI/ModuleManager.cc +++ b/PPI/ModuleManager.cc @@ -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 // // This program is free software; you can redistribute it and/or modify @@ -27,7 +27,8 @@ //#include "ModuleManager.ih" // Custom includes -#include "Scheduler/Scheduler.hh" +#include "../Scheduler/Scheduler.hh" +#include "../Utils/membind.hh" #include "Module.hh" //#include "ModuleManager.mpp" @@ -39,12 +40,15 @@ prefix_ void senf::ppi::ModuleManager::init() { - ModuleRegistry::const_iterator i (moduleRegistry_.begin()); - ModuleRegistry::const_iterator const i_end (moduleRegistry_.end()); - for (; i != i_end; ++i) - (*i)->init(); + while (! initQueue_.empty()) { + initQueue_.front()->v_init(); + initQueue_.pop_front(); + } + initRunner_.disable(); } +#ifndef DOXYGEN + struct senf::ppi::ModuleManager::RunGuard { RunGuard(ModuleManager & m) : manager(m) { manager.running_ = true; } @@ -52,18 +56,22 @@ struct senf::ppi::ModuleManager::RunGuard ModuleManager & manager; }; +#endif + prefix_ void senf::ppi::ModuleManager::run() { init(); RunGuard guard (*this); - Scheduler::instance().process(); + scheduler::process(); } //////////////////////////////////////// // private members prefix_ senf::ppi::ModuleManager::ModuleManager() - : running_(false), terminate_(false) + : running_(false), terminate_(false), + initRunner_ ("senf::ppi::init", membind(&ModuleManager::init, this), + scheduler::EventHook::PRE, false) {} ///////////////////////////////cc.e////////////////////////////////////////