logic: indexer commands

* replaced parser arguments by project specific IndexerCommands that know everything the indexer needs to know to do its job
* added different language and project specific indexers that know how to handle a certain kind of indexer command
* refactored FileManager and FileRegister to have less overhead
* removed no-rtti restriction for clang files in lib cxx
* uncommented deprecated interprocess code.

fortune cookie message = Happiness will bring you good luck.
This commit is contained in:
malte_langkabel
2017-02-22 16:42:20 +01:00
parent 650cd8101e
commit 4563cbe90a
101 changed files with 1908 additions and 1120 deletions
+58
View File
@@ -0,0 +1,58 @@
#include "data/TaskMergeStorages.h"
#include <chrono>
#include <thread>
#include "data/StorageProvider.h"
TaskMergeStorages::TaskMergeStorages(
std::shared_ptr<StorageProvider> storageProvider
)
: m_storageProvider(storageProvider)
{
}
void TaskMergeStorages::doEnter(std::shared_ptr<Blackboard> blackboard)
{
}
Task::TaskState TaskMergeStorages::doUpdate(std::shared_ptr<Blackboard> blackboard)
{
if (m_storageProvider->getStorageCount() > 2) // largest storage won't be touched here
{
std::shared_ptr<IntermediateStorage> target = m_storageProvider->consumeSecondLargestStorage();
std::shared_ptr<IntermediateStorage> source = m_storageProvider->consumeSecondLargestStorage();
if (target && source)
{
target->inject(source.get());
m_storageProvider->insert(target);
return STATE_SUCCESS;
}
else
{
if (target)
{
m_storageProvider->insert(target);
}
if (source)
{
m_storageProvider->insert(source);
}
}
}
else
{
const int SLEEP_TIME_MS = 25;
std::this_thread::sleep_for(std::chrono::milliseconds(SLEEP_TIME_MS));
}
return STATE_FAILURE;
}
void TaskMergeStorages::doExit(std::shared_ptr<Blackboard> blackboard)
{
}
void TaskMergeStorages::doReset(std::shared_ptr<Blackboard> blackboard)
{
}