X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=PPI%2FModuleManager.cc;h=91a437333f0d2e054bb449a57ac04072c7afa959;hb=55d09e34a5b9a9c7af23cc5ecb0ab79d58757a2d;hp=490bb010e6e0eeb69169621c08bc1967f1f0db01;hpb=ac90835cbb00ca83a51ab9efb23fdcb75518e808;p=senf.git diff --git a/PPI/ModuleManager.cc b/PPI/ModuleManager.cc index 490bb01..91a4373 100644 --- a/PPI/ModuleManager.cc +++ b/PPI/ModuleManager.cc @@ -28,6 +28,7 @@ // Custom includes #include "../Scheduler/Scheduler.hh" +#include "../Utils/membind.hh" #include "Module.hh" //#include "ModuleManager.mpp" @@ -39,10 +40,11 @@ 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 @@ -67,7 +69,9 @@ prefix_ void senf::ppi::ModuleManager::run() // private members prefix_ senf::ppi::ModuleManager::ModuleManager() - : running_(false), terminate_(false) + : running_(false), terminate_(false), + initRunner_ ("senf::ppi::init", membind(&ModuleManager::init, this), false, + scheduler::EventEvent::PRIORITY_LOW) {} ///////////////////////////////cc.e////////////////////////////////////////