src: added language package classes and moved indexer instantiation there

This commit is contained in:
mlangkabel
2018-04-27 18:02:32 +02:00
parent a7ef02459a
commit 9af5780c12
23 changed files with 154 additions and 188 deletions
+3 -4
View File
@@ -170,10 +170,6 @@ add_files(
data/indexer/IndexerCommandType.h
data/indexer/IndexerComposite.cpp
data/indexer/IndexerComposite.h
data/indexer/IndexerFactory.cpp
data/indexer/IndexerFactory.h
data/indexer/IndexerFactoryModule.cpp
data/indexer/IndexerFactoryModule.h
data/indexer/TaskBuildIndex.cpp
data/indexer/TaskBuildIndex.h
@@ -552,6 +548,9 @@ add_files(
Application.cpp
Application.h
LanguagePackage.h
LanguagePackageManager.cpp
LanguagePackageManager.h
LicenseChecker.cpp
LicenseChecker.h
UpdateChecker.h
+16
View File
@@ -0,0 +1,16 @@
#ifndef LANGUAGE_PACKAGE_H
#define LANGUAGE_PACKAGE_H
#include <memory>
#include <vector>
class IndexerBase;
class LanguagePackage
{
public:
virtual ~LanguagePackage() = default;
virtual std::vector<std::shared_ptr<IndexerBase>> instantiateSupportedIndexers() const = 0;
};
#endif // LANGUAGE_PACKAGE_H
+38
View File
@@ -0,0 +1,38 @@
#include "LanguagePackageManager.h"
#include "data/indexer/IndexerComposite.h"
#include "LanguagePackage.h"
std::shared_ptr<LanguagePackageManager> LanguagePackageManager::getInstance()
{
if (!s_instance)
{
s_instance = std::shared_ptr<LanguagePackageManager>(new LanguagePackageManager());
}
return s_instance;
}
void LanguagePackageManager::destroyInstance()
{
s_instance.reset();
}
void LanguagePackageManager::addPackage(std::shared_ptr<LanguagePackage> package)
{
m_packages.push_back(package);
}
std::shared_ptr<IndexerComposite> LanguagePackageManager::instantiateSupportedIndexers()
{
std::shared_ptr<IndexerComposite> composite = std::make_shared<IndexerComposite>();
for (std::shared_ptr<LanguagePackage> package : m_packages)
{
for (std::shared_ptr<IndexerBase> indexer : package->instantiateSupportedIndexers())
{
composite->addIndexer(indexer);
}
}
return composite;
}
std::shared_ptr<LanguagePackageManager> LanguagePackageManager::s_instance;
+26
View File
@@ -0,0 +1,26 @@
#ifndef LANGUAGE_PACKAGE_MANAGER_H
#define LANGUAGE_PACKAGE_MANAGER_H
#include <memory>
#include <vector>
class IndexerComposite;
class LanguagePackage;
class LanguagePackageManager
{
public:
static std::shared_ptr<LanguagePackageManager> getInstance();
static void destroyInstance();
void addPackage(std::shared_ptr<LanguagePackage> package);
std::shared_ptr<IndexerComposite> instantiateSupportedIndexers();
private:
static std::shared_ptr<LanguagePackageManager> s_instance;
LanguagePackageManager() = default;
std::vector<std::shared_ptr<LanguagePackage>> m_packages;
};
#endif // LANGUAGE_PACKAGE_MANAGER_H
-40
View File
@@ -1,40 +0,0 @@
#include "data/indexer/IndexerFactory.h"
#include "data/indexer/IndexerComposite.h"
#include "IndexerFactoryModule.h"
std::shared_ptr<IndexerFactory> IndexerFactory::getInstance()
{
if (!s_instance)
{
s_instance = std::shared_ptr<IndexerFactory>(new IndexerFactory());
}
return s_instance;
}
void IndexerFactory::destroyInstance()
{
s_instance.reset();
}
void IndexerFactory::addModule(std::shared_ptr<IndexerFactoryModule> module)
{
m_modules.push_back(module);
}
std::shared_ptr<IndexerComposite> IndexerFactory::createCompositeIndexerForAllRegisteredModules()
{
std::shared_ptr<IndexerComposite> composite = std::make_shared<IndexerComposite>();
for (auto it: m_modules)
{
composite->addIndexer(it->createIndexer());
}
return composite;
}
std::shared_ptr<IndexerFactory> IndexerFactory::s_instance;
IndexerFactory::IndexerFactory()
{
}
-27
View File
@@ -1,27 +0,0 @@
#ifndef INDEXER_FACTORY_H
#define INDEXER_FACTORY_H
#include <memory>
#include <vector>
class IndexerBase;
class IndexerComposite;
class IndexerFactoryModule;
class IndexerFactory
{
public:
static std::shared_ptr<IndexerFactory> getInstance();
static void destroyInstance();
void addModule(std::shared_ptr<IndexerFactoryModule> module);
std::shared_ptr<IndexerComposite> createCompositeIndexerForAllRegisteredModules();
private:
static std::shared_ptr<IndexerFactory> s_instance;
IndexerFactory();
std::vector<std::shared_ptr<IndexerFactoryModule>> m_modules;
};
#endif // INDEXER_FACTORY_H
@@ -1,5 +0,0 @@
#include "data/indexer/IndexerFactoryModule.h"
IndexerFactoryModule::~IndexerFactoryModule()
{
}
@@ -1,15 +0,0 @@
#ifndef INDEXER_FACTORY_MODULE_H
#define INDEXER_FACTORY_MODULE_H
#include <memory>
class IndexerBase;
class IndexerFactoryModule
{
public:
virtual ~IndexerFactoryModule();
virtual std::shared_ptr<IndexerBase> createIndexer() = 0;
};
#endif // INDEXER_FACTORY_MODULE_H
@@ -1,11 +1,10 @@
#include "InterprocessIndexer.h"
#include "utility/file/FileRegister.h"
#include "utility/logging/logging.h"
#include "data/indexer/IndexerCommand.h"
#include "data/indexer/IndexerComposite.h"
#include "data/indexer/IndexerFactory.h"
#include "utility/file/FileRegister.h"
#include "utility/logging/logging.h"
#include "LanguagePackageManager.h"
InterprocessIndexer::InterprocessIndexer(const std::string& uuid, Id processId)
: m_interprocessIndexerCommandManager(uuid, processId, false)
@@ -25,7 +24,7 @@ void InterprocessIndexer::work()
try
{
LOG_INFO(std::to_wstring(m_processId) + L" starting up indexer");
std::shared_ptr<IndexerBase> indexer = IndexerFactory::getInstance()->createCompositeIndexerForAllRegisteredModules();
std::shared_ptr<IndexerBase> indexer = LanguagePackageManager::getInstance()->instantiateSupportedIndexers();
while (std::shared_ptr<IndexerCommand> indexerCommand = m_interprocessIndexerCommandManager.popIndexerCommand())
{