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:
@@ -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)
|
||||
{
|
||||
}
|
||||
Reference in New Issue
Block a user