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;
42 void PluginManager::SetUnpackerSettingAll(bool automatic)
44 FastMutex::ScopedLock lock(m_mutex);
45 for (PluginFileInfoMap::iterator it = m_pluginSettings.begin(); it != m_pluginSettings.end(); ++it)
46 it->second->m_infoUnpacker.Initialize(automatic);
49 void PluginManager::SetPrediffSettingAll(bool automatic)
51 FastMutex::ScopedLock lock(m_mutex);
52 for (PluginFileInfoMap::iterator it = m_pluginSettings.begin(); it != m_pluginSettings.end(); ++it)
53 it->second->m_infoPrediffer.Initialize(automatic);
56 void PluginManager::SetPrediffer(const String& filteredFilenames, const String& predifferPipeline)
58 PackingInfo * infoUnpacker = nullptr;
59 PrediffingInfo * infoPrediffer = nullptr;
60 FetchPluginInfos(filteredFilenames, &infoUnpacker, &infoPrediffer);
61 infoPrediffer->SetPluginPipeline(predifferPipeline);