2 * @file PluginManager.cpp
4 * @brief Implementation of PluginManager class
6 //////////////////////////////////////////////////////////////////////
9 #include "PluginManager.h"
10 #include <Poco/ScopedLock.h>
12 using Poco::FastMutex;
14 PluginManager::~PluginManager()
19 * @brief retrieve relevant plugin settings for specified comparison
21 void PluginManager::FetchPluginInfos(const String& filteredFilenames,
22 PackingInfo ** infoUnpacker,
23 PrediffingInfo ** infoPrediffer)
25 FastMutex::ScopedLock lock(m_mutex);
27 PluginFileInfoMap::iterator it = m_pluginSettings.find(filteredFilenames);
28 if (it == m_pluginSettings.end())
30 // This might be a good place to set any user-specified default values
31 fi.reset(new PluginFileInfo);
32 m_pluginSettings[filteredFilenames] = fi;
38 *infoUnpacker = &fi->m_infoUnpacker;
39 *infoPrediffer = &fi->m_infoPrediffer;
43 * @brief Store specified prediff choice for specified comparison
45 void PluginManager::SetPrediffSetting(const String& filteredFilenames, PLUGIN_MODE newsetting)
47 PackingInfo * infoUnpacker = nullptr;
48 PrediffingInfo * infoPrediffer = nullptr;
49 FetchPluginInfos(filteredFilenames, &infoUnpacker, &infoPrediffer);
50 infoPrediffer->Initialize(newsetting);
53 void PluginManager::SetPrediffSettingAll(PLUGIN_MODE newsetting)
55 FastMutex::ScopedLock lock(m_mutex);
56 for (PluginFileInfoMap::iterator it = m_pluginSettings.begin(); it != m_pluginSettings.end(); ++it)
59 fi.reset(new PluginFileInfo);
60 fi->m_infoPrediffer.Initialize(newsetting);
65 void PluginManager::SetPrediffer(const String& filteredFilenames, const String & prediffer)
67 PackingInfo * infoUnpacker = nullptr;
68 PrediffingInfo * infoPrediffer = nullptr;
69 FetchPluginInfos(filteredFilenames, &infoUnpacker, &infoPrediffer);
70 infoPrediffer->m_PluginName = prediffer;