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() = default;
17 * @brief retrieve relevant plugin settings for specified comparison
19 void PluginManager::FetchPluginInfos(const String& filteredFilenames,
20 PackingInfo ** infoUnpacker,
21 PrediffingInfo ** infoPrediffer)
23 FastMutex::ScopedLock lock(m_mutex);
25 PluginFileInfoMap::iterator it = m_pluginSettings.find(filteredFilenames);
26 if (it == m_pluginSettings.end())
28 // This might be a good place to set any user-specified default values
29 fi.reset(new PluginFileInfo);
30 m_pluginSettings[filteredFilenames] = fi;
36 *infoUnpacker = &fi->m_infoUnpacker;
37 *infoPrediffer = &fi->m_infoPrediffer;
40 void PluginManager::SetUnpackerSettingAll(bool automatic)
42 FastMutex::ScopedLock lock(m_mutex);
43 for (PluginFileInfoMap::iterator it = m_pluginSettings.begin(); it != m_pluginSettings.end(); ++it)
44 it->second->m_infoUnpacker.Initialize(automatic);
47 void PluginManager::SetPrediffSettingAll(bool automatic)
49 FastMutex::ScopedLock lock(m_mutex);
50 for (PluginFileInfoMap::iterator it = m_pluginSettings.begin(); it != m_pluginSettings.end(); ++it)
51 it->second->m_infoPrediffer.Initialize(automatic);
54 void PluginManager::SetPrediffer(const String& filteredFilenames, const String& predifferPipeline)
56 PackingInfo * infoUnpacker = nullptr;
57 PrediffingInfo * infoPrediffer = nullptr;
58 FetchPluginInfos(filteredFilenames, &infoUnpacker, &infoPrediffer);
59 infoPrediffer->SetPluginPipeline(predifferPipeline);