logic: allow the user to discard an aborted indexer run

* keep old database on filesystem while indexing
* migrate old ".coatiproject" settings to new ".srctrlprj" extension when loading project
* send new errors in MessageErrorCountUpdate after injecting
* recheck filepath exist() in FileSystem's remove, rename, copy and create functions
* updated tasks to new "override" policy
This commit is contained in:
mlangkabel
2018-07-03 18:54:53 +02:00
parent c8a885be83
commit a1dd1a77c9
41 changed files with 434 additions and 215 deletions
@@ -6,10 +6,6 @@ TaskDecorator::TaskDecorator()
{
}
TaskDecorator::~TaskDecorator()
{
}
std::shared_ptr<TaskDecorator> TaskDecorator::addChildTask(std::shared_ptr<Task> child)
{
setTask(child);
+1 -2
View File
@@ -13,11 +13,10 @@ class TaskDecorator
{
public:
TaskDecorator();
virtual ~TaskDecorator();
std::shared_ptr<TaskDecorator> addChildTask(std::shared_ptr<Task> child);
virtual void setTask(std::shared_ptr<Task> task);
virtual void terminate();
void terminate() override;
protected:
std::shared_ptr<TaskRunner> m_taskRunner;
@@ -14,11 +14,11 @@ public:
TaskDecoratorDelay(size_t delayMS);
private:
virtual void doEnter(std::shared_ptr<Blackboard> blackboard);
virtual TaskState doUpdate(std::shared_ptr<Blackboard> blackboard);
virtual void doExit(std::shared_ptr<Blackboard> blackboard);
virtual void doReset(std::shared_ptr<Blackboard> blackboard);
virtual void doTerminate();
void doEnter(std::shared_ptr<Blackboard> blackboard) override;
TaskState doUpdate(std::shared_ptr<Blackboard> blackboard) override;
void doExit(std::shared_ptr<Blackboard> blackboard) override;
void doReset(std::shared_ptr<Blackboard> blackboard) override;
void doTerminate() override;
const size_t m_delayMS;
@@ -18,10 +18,10 @@ public:
TaskDecoratorRepeat(ConditionType condition, TaskState exitState);
private:
virtual void doEnter(std::shared_ptr<Blackboard> blackboard);
virtual TaskState doUpdate(std::shared_ptr<Blackboard> blackboard);
virtual void doExit(std::shared_ptr<Blackboard> blackboard);
virtual void doReset(std::shared_ptr<Blackboard> blackboard);
void doEnter(std::shared_ptr<Blackboard> blackboard) override;
TaskState doUpdate(std::shared_ptr<Blackboard> blackboard) override;
void doExit(std::shared_ptr<Blackboard> blackboard) override;
void doReset(std::shared_ptr<Blackboard> blackboard) override;
const ConditionType m_condition;
const TaskState m_exitState;
@@ -0,0 +1,26 @@
#include "utility/scheduling/TaskFindValue.h"
#include "utility/scheduling/Blackboard.h"
TaskFindValue::TaskFindValue(const std::string& valueName)
: m_valueName(valueName)
{
}
void TaskFindValue::doEnter(std::shared_ptr<Blackboard> blackboard)
{
}
Task::TaskState TaskFindValue::doUpdate(std::shared_ptr<Blackboard> blackboard)
{
std::lock_guard<std::mutex> lock(blackboard->getMutex());
return (blackboard->exists(m_valueName)) ? STATE_SUCCESS : STATE_FAILURE;
}
void TaskFindValue::doExit(std::shared_ptr<Blackboard> blackboard)
{
}
void TaskFindValue::doReset(std::shared_ptr<Blackboard> blackboard)
{
}
@@ -0,0 +1,25 @@
#ifndef TASK_FIND_VALUE_H
#define TASK_FIND_VALUE_H
#include <string>
#include "utility/scheduling/Task.h"
class Blackboard;
class TaskFindValue:
public Task
{
public:
TaskFindValue(const std::string& valueName);
private:
void doEnter(std::shared_ptr<Blackboard> blackboard) override;
TaskState doUpdate(std::shared_ptr<Blackboard> blackboard) override;
void doExit(std::shared_ptr<Blackboard> blackboard) override;
void doReset(std::shared_ptr<Blackboard> blackboard) override;
const std::string m_valueName;
};
#endif // TASK_FIND_VALUE_H
-4
View File
@@ -4,10 +4,6 @@ TaskGroup::TaskGroup()
{
}
TaskGroup::~TaskGroup()
{
}
std::shared_ptr<TaskGroup> TaskGroup::addChildTasks(std::shared_ptr<Task> child1)
{
addTask(child1);
+1 -2
View File
@@ -12,13 +12,12 @@ class TaskGroup
{
public:
TaskGroup();
virtual ~TaskGroup();
std::shared_ptr<TaskGroup> addChildTasks(std::shared_ptr<Task> child1);
std::shared_ptr<TaskGroup> addChildTasks(std::shared_ptr<Task> child1, std::shared_ptr<Task> child2);
std::shared_ptr<TaskGroup> addChildTasks(std::shared_ptr<Task> child1, std::shared_ptr<Task> child2, std::shared_ptr<Task> child3);
virtual void addTask(std::shared_ptr<Task> task) = 0;
virtual void terminate();
void terminate() override;
private:
virtual void doTerminate() = 0;
@@ -15,7 +15,7 @@ public:
TaskGroupParallel();
virtual ~TaskGroupParallel();
virtual void addTask(std::shared_ptr<Task> task);
void addTask(std::shared_ptr<Task> task) override;
private:
struct TaskInfo
@@ -29,11 +29,11 @@ private:
volatile bool active;
};
virtual void doEnter(std::shared_ptr<Blackboard> blackboard);
virtual TaskState doUpdate(std::shared_ptr<Blackboard> blackboard);
virtual void doExit(std::shared_ptr<Blackboard> blackboard);
virtual void doReset(std::shared_ptr<Blackboard> blackboard);
virtual void doTerminate();
void doEnter(std::shared_ptr<Blackboard> blackboard) override;
TaskState doUpdate(std::shared_ptr<Blackboard> blackboard) override;
void doExit(std::shared_ptr<Blackboard> blackboard) override;
void doReset(std::shared_ptr<Blackboard> blackboard) override;
void doTerminate() override;
void processTaskThreaded(
std::shared_ptr<TaskInfo> taskInfo,
@@ -4,10 +4,6 @@ TaskGroupSelector::TaskGroupSelector()
{
}
TaskGroupSelector::~TaskGroupSelector()
{
}
void TaskGroupSelector::addTask(std::shared_ptr<Task> task)
{
m_taskRunners.push_back(std::make_shared<TaskRunner>(task));
@@ -9,16 +9,15 @@ class TaskGroupSelector
{
public:
TaskGroupSelector();
virtual ~TaskGroupSelector();
virtual void addTask(std::shared_ptr<Task> task);
private:
virtual void doEnter(std::shared_ptr<Blackboard> blackboard);
virtual TaskState doUpdate(std::shared_ptr<Blackboard> blackboard);
virtual void doExit(std::shared_ptr<Blackboard> blackboard);
virtual void doReset(std::shared_ptr<Blackboard> blackboard);
virtual void doTerminate();
void doEnter(std::shared_ptr<Blackboard> blackboard) override;
TaskState doUpdate(std::shared_ptr<Blackboard> blackboard) override;
void doExit(std::shared_ptr<Blackboard> blackboard) override;
void doReset(std::shared_ptr<Blackboard> blackboard) override;
void doTerminate() override;
std::vector<std::shared_ptr<TaskRunner>> m_taskRunners;
int m_taskIndex;
@@ -4,10 +4,6 @@ TaskGroupSequence::TaskGroupSequence()
{
}
TaskGroupSequence::~TaskGroupSequence()
{
}
void TaskGroupSequence::addTask(std::shared_ptr<Task> task)
{
m_taskRunners.push_back(std::make_shared<TaskRunner>(task));
@@ -9,16 +9,15 @@ class TaskGroupSequence
{
public:
TaskGroupSequence();
virtual ~TaskGroupSequence();
virtual void addTask(std::shared_ptr<Task> task);
private:
virtual void doEnter(std::shared_ptr<Blackboard> blackboard);
virtual TaskState doUpdate(std::shared_ptr<Blackboard> blackboard);
virtual void doExit(std::shared_ptr<Blackboard> blackboard);
virtual void doReset(std::shared_ptr<Blackboard> blackboard);
virtual void doTerminate();
void doEnter(std::shared_ptr<Blackboard> blackboard) override;
TaskState doUpdate(std::shared_ptr<Blackboard> blackboard) override;
void doExit(std::shared_ptr<Blackboard> blackboard) override;
void doReset(std::shared_ptr<Blackboard> blackboard) override;
void doTerminate() override;
std::vector<std::shared_ptr<TaskRunner>> m_taskRunners;
int m_taskIndex;
@@ -5,10 +5,6 @@ TaskLambda::TaskLambda(std::function<void()> func)
{
}
TaskLambda::~TaskLambda()
{
}
void TaskLambda::doEnter(std::shared_ptr<Blackboard> blackboard)
{
}
+4 -5
View File
@@ -10,13 +10,12 @@ class TaskLambda
{
public:
TaskLambda(std::function<void()> func);
virtual ~TaskLambda();
private:
virtual void doEnter(std::shared_ptr<Blackboard> blackboard);
virtual TaskState doUpdate(std::shared_ptr<Blackboard> blackboard);
virtual void doExit(std::shared_ptr<Blackboard> blackboard);
virtual void doReset(std::shared_ptr<Blackboard> blackboard);
void doEnter(std::shared_ptr<Blackboard> blackboard) override;
TaskState doUpdate(std::shared_ptr<Blackboard> blackboard) override;
void doExit(std::shared_ptr<Blackboard> blackboard) override;
void doReset(std::shared_ptr<Blackboard> blackboard) override;
std::function<void()> m_func;
};
@@ -18,10 +18,10 @@ public:
TaskReturnSuccessWhile(const std::string& lhsValueName, ConditionType condition, T rhsValue);
private:
virtual void doEnter(std::shared_ptr<Blackboard> blackboard);
virtual TaskState doUpdate(std::shared_ptr<Blackboard> blackboard);
virtual void doExit(std::shared_ptr<Blackboard> blackboard);
virtual void doReset(std::shared_ptr<Blackboard> blackboard);
void doEnter(std::shared_ptr<Blackboard> blackboard) override;
TaskState doUpdate(std::shared_ptr<Blackboard> blackboard) override;
void doExit(std::shared_ptr<Blackboard> blackboard) override;
void doReset(std::shared_ptr<Blackboard> blackboard) override;
const std::string m_lhsValueName;
const ConditionType m_condition;
+4 -4
View File
@@ -12,10 +12,10 @@ public:
TaskSetValue(const std::string& valueName, T value);
private:
virtual void doEnter(std::shared_ptr<Blackboard> blackboard);
virtual TaskState doUpdate(std::shared_ptr<Blackboard> blackboard);
virtual void doExit(std::shared_ptr<Blackboard> blackboard);
virtual void doReset(std::shared_ptr<Blackboard> blackboard);
void doEnter(std::shared_ptr<Blackboard> blackboard) override;
TaskState doUpdate(std::shared_ptr<Blackboard> blackboard) override;
void doExit(std::shared_ptr<Blackboard> blackboard) override;
void doReset(std::shared_ptr<Blackboard> blackboard) override;
const std::string m_valueName;
const T m_value;