ModulePtr ModuleManager::discoverModule(const std::string& moduleFile) { ModulePtr module; try { OTMLDocumentPtr doc = OTMLDocument::parse(moduleFile); OTMLNodePtr moduleNode = doc->at("Module"); std::string name = moduleNode->valueAt("name"); bool push = false; module = getModule(name); if(!module) { module = ModulePtr(new Module(name)); push = true; } module->discover(moduleNode); // not loaded modules are always in back if(push) m_modules.push_back(module); } catch(stdext::exception& e) { g_logger.error(stdext::format("Unable to discover module from file '%s': %s", moduleFile, e.what())); } return module; }
ModulePtr ModuleManager::discoverModule(const std::string& moduleFile) { ModulePtr module; try { OTMLDocumentPtr doc = OTMLDocument::parse(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"); module = ModulePtr(new Module(name)); module->discover(moduleNode); m_modules.push_back(module); } catch(Exception& e) { logError("Unable to discover module from file '", moduleFile, "': ", e.what()); } return module; }