src: added language package classes and moved indexer instantiation there
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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;
|
||||
@@ -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
|
||||
@@ -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()
|
||||
{
|
||||
}
|
||||
@@ -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())
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user