add modulemanager module

This commit is contained in:
Eduardo Bart
2012-02-05 23:44:47 -02:00
parent a55e138002
commit 64c9e4f1d5
25 changed files with 379 additions and 60 deletions

View File

@@ -30,6 +30,9 @@ ModuleManager g_modules;
void ModuleManager::discoverModules()
{
// remove modules that are not loaded
m_autoLoadModules.clear();
auto moduleDirs = g_resources.listDirectoryFiles("/");
for(const std::string& moduleDir : moduleDirs) {
auto moduleFiles = g_resources.listDirectoryFiles("/" + moduleDir);
@@ -85,12 +88,19 @@ ModulePtr ModuleManager::discoverModule(const std::string& moduleFile)
OTMLNodePtr moduleNode = doc->at("Module");
std::string name = moduleNode->valueAt("name");
if(getModule(name))
Fw::throwException("module '", name, "' already exists, cannot have duplicate module names");
//if(getModule(name))
// Fw::throwException("module '", name, "' already exists, cannot have duplicate module names");
module = ModulePtr(new Module(name));
bool push = false;
module = getModule(name);
if(!module) {
module = ModulePtr(new Module(name));
push = true;
}
module->discover(moduleNode);
m_modules.push_back(module);
if(push)
m_modules.push_back(module);
} catch(Exception& e) {
logError("Unable to discover module from file '", moduleFile, "': ", e.what());
}