diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2009-09-07 14:46:47 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2009-09-07 14:46:47 +0200 |
commit | 118f716017d1ab7f23ad7b735b28025df419c054 (patch) | |
tree | 204e9df801b2a003212df096f60ef4338bdaaf2c /src/Daemon | |
parent | bedff13356fa8c4325b30595bc4a052caaf501ed (diff) | |
download | abrt-118f716017d1ab7f23ad7b735b28025df419c054.tar.gz abrt-118f716017d1ab7f23ad7b735b28025df419c054.tar.xz abrt-118f716017d1ab7f23ad7b735b28025df419c054.zip |
PluginManager.cpp: small optimization: don't search twice in containers
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'src/Daemon')
-rw-r--r-- | src/Daemon/PluginManager.cpp | 73 |
1 files changed, 43 insertions, 30 deletions
diff --git a/src/Daemon/PluginManager.cpp b/src/Daemon/PluginManager.cpp index 5371dd47..5580cdf2 100644 --- a/src/Daemon/PluginManager.cpp +++ b/src/Daemon/PluginManager.cpp @@ -188,22 +188,24 @@ void CPluginManager::LoadPlugin(const std::string& pName) void CPluginManager::UnLoadPlugin(const std::string& pName) { - if (m_mapABRTPlugins.find(pName) != m_mapABRTPlugins.end()) + map_abrt_plugins_t::iterator abrt_plugin = m_mapABRTPlugins.find(pName); + if (abrt_plugin != m_mapABRTPlugins.end()) { UnRegisterPlugin(pName); - delete m_mapABRTPlugins[pName]; - m_mapABRTPlugins.erase(pName); + delete abrt_plugin->second; + m_mapABRTPlugins.erase(abrt_plugin); log("Plugin %s successfully unloaded", pName.c_str()); } } void CPluginManager::RegisterPlugin(const std::string& pName) { - if (m_mapABRTPlugins.find(pName) != m_mapABRTPlugins.end()) + map_abrt_plugins_t::iterator abrt_plugin = m_mapABRTPlugins.find(pName); + if (abrt_plugin != m_mapABRTPlugins.end()) { if (m_mapPlugins.find(pName) == m_mapPlugins.end()) { - CPlugin* plugin = m_mapABRTPlugins[pName]->PluginNew(); + CPlugin* plugin = abrt_plugin->second->PluginNew(); map_plugin_settings_t pluginSettings; LoadPluginSettings(PLUGINS_CONF_DIR"/" + pName + "."PLUGINS_CONF_EXTENSION, pluginSettings); @@ -215,34 +217,37 @@ void CPluginManager::RegisterPlugin(const std::string& pName) catch (CABRTException& e) { warn_client("Can not initialize plugin " + pName + "(" - + std::string(plugin_type_str[m_mapABRTPlugins[pName]->GetType()]) + + std::string(plugin_type_str[abrt_plugin->second->GetType()]) + "): " + e.what()); UnLoadPlugin(pName); return; } m_mapPlugins[pName] = plugin; - log("Registered plugin %s(%s)", pName.c_str(), plugin_type_str[m_mapABRTPlugins[pName]->GetType()]); + log("Registered plugin %s(%s)", pName.c_str(), plugin_type_str[abrt_plugin->second->GetType()]); } } } void CPluginManager::UnRegisterPlugin(const std::string& pName) { - if (m_mapABRTPlugins.find(pName) != m_mapABRTPlugins.end()) + map_abrt_plugins_t::iterator abrt_plugin = m_mapABRTPlugins.find(pName); + if (abrt_plugin != m_mapABRTPlugins.end()) { - if (m_mapPlugins.find(pName) != m_mapPlugins.end()) + map_plugins_t::iterator plugin = m_mapPlugins.find(pName); + if (plugin != m_mapPlugins.end()) { - m_mapPlugins[pName]->DeInit(); - delete m_mapPlugins[pName]; - m_mapPlugins.erase(pName); - log("UnRegistered plugin %s(%s)", pName.c_str(), plugin_type_str[m_mapABRTPlugins[pName]->GetType()]); + plugin->second->DeInit(); + delete plugin->second; + m_mapPlugins.erase(plugin); + log("UnRegistered plugin %s(%s)", pName.c_str(), plugin_type_str[abrt_plugin->second->GetType()]); } } } CAnalyzer* CPluginManager::GetAnalyzer(const std::string& pName) { - if (m_mapPlugins.find(pName) == m_mapPlugins.end()) + map_plugins_t::iterator plugin = m_mapPlugins.find(pName); + if (plugin == m_mapPlugins.end()) { throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetAnalyzer():" "Analyzer plugin: '"+pName+"' is not registered."); @@ -252,12 +257,13 @@ CAnalyzer* CPluginManager::GetAnalyzer(const std::string& pName) throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetAnalyzer():" "Plugin: '"+pName+"' is not analyzer plugin."); } - return (CAnalyzer*)(m_mapPlugins[pName]); + return (CAnalyzer*)(plugin->second); } CReporter* CPluginManager::GetReporter(const std::string& pName) { - if (m_mapPlugins.find(pName) == m_mapPlugins.end()) + map_plugins_t::iterator plugin = m_mapPlugins.find(pName); + if (plugin == m_mapPlugins.end()) { throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetReporter():" "Reporter plugin: '"+pName+"' is not registered."); @@ -267,12 +273,13 @@ CReporter* CPluginManager::GetReporter(const std::string& pName) throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetReporter():" "Plugin: '"+pName+"' is not reporter plugin."); } - return (CReporter*)(m_mapPlugins[pName]); + return (CReporter*)(plugin->second); } CAction* CPluginManager::GetAction(const std::string& pName) { - if (m_mapPlugins.find(pName) == m_mapPlugins.end()) + map_plugins_t::iterator plugin = m_mapPlugins.find(pName); + if (plugin == m_mapPlugins.end()) { throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetAction():" "Action plugin: '"+pName+"' is not registered."); @@ -282,12 +289,13 @@ CAction* CPluginManager::GetAction(const std::string& pName) throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetAction():" "Plugin: '"+pName+"' is not action plugin."); } - return (CAction*)(m_mapPlugins[pName]); + return (CAction*)(plugin->second); } CDatabase* CPluginManager::GetDatabase(const std::string& pName) { - if (m_mapPlugins.find(pName) == m_mapPlugins.end()) + map_plugins_t::iterator plugin = m_mapPlugins.find(pName); + if (plugin == m_mapPlugins.end()) { throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetDatabase():" "Database plugin: '"+pName+"' is not registered."); @@ -297,12 +305,13 @@ CDatabase* CPluginManager::GetDatabase(const std::string& pName) throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetDatabase():" "Plugin: '"+pName+"' is not database plugin."); } - return (CDatabase*)(m_mapPlugins[pName]); + return (CDatabase*)(plugin->second); } plugin_type_t CPluginManager::GetPluginType(const std::string& pName) { - if (m_mapPlugins.find(pName) == m_mapPlugins.end()) + map_plugins_t::iterator plugin = m_mapPlugins.find(pName); + if (plugin == m_mapPlugins.end()) { throw CABRTException(EXCEP_PLUGIN, "CPluginManager::GetPluginType():" "Plugin: '"+pName+"' is not registered."); @@ -336,13 +345,15 @@ void CPluginManager::SetPluginSettings(const std::string& pName, const std::string& pUID, const map_plugin_settings_t& pSettings) { - if (m_mapABRTPlugins.find(pName) != m_mapABRTPlugins.end()) + map_abrt_plugins_t::iterator abrt_plugin = m_mapABRTPlugins.find(pName); + if (abrt_plugin != m_mapABRTPlugins.end()) { - if (m_mapPlugins.find(pName) != m_mapPlugins.end()) + map_plugins_t::iterator plugin = m_mapPlugins.find(pName); + if (plugin != m_mapPlugins.end()) { - m_mapPlugins[pName]->SetSettings(pSettings); + plugin->second->SetSettings(pSettings); - if (m_mapABRTPlugins[pName]->GetType() == REPORTER) + if (abrt_plugin->second->GetType() == REPORTER) { std::string home = get_home_dir(atoi(pUID.c_str())); if (home != "") @@ -395,13 +406,15 @@ map_plugin_settings_t CPluginManager::GetPluginSettings(const std::string& pName const std::string& pUID) { map_plugin_settings_t ret; - if (m_mapABRTPlugins.find(pName) != m_mapABRTPlugins.end()) + map_abrt_plugins_t::iterator abrt_plugin = m_mapABRTPlugins.find(pName); + if (abrt_plugin != m_mapABRTPlugins.end()) { - if (m_mapPlugins.find(pName) != m_mapPlugins.end()) + map_plugins_t::iterator plugin = m_mapPlugins.find(pName); + if (plugin != m_mapPlugins.end()) { - ret = m_mapPlugins[pName]->GetSettings(); + ret = plugin->second->GetSettings(); - if (m_mapABRTPlugins[pName]->GetType() == REPORTER) + if (abrt_plugin->second->GetType() == REPORTER) { std::string home = get_home_dir(atoi(pUID.c_str())); if (home != "") |