feat: add MultipleOptionsTask

This is a variation of a Sequential Task, in which a subtask failing
will prompt the next one to execute, and a subtask being successful will
stop the task.

This way, this can be used for easily managing fallbacks with tasks. :D

Signed-off-by: flow <flowlnlnln@gmail.com>
This commit is contained in:
flow
2022-06-02 19:34:08 -03:00
parent dd6aabf9ab
commit 9a44c92211
4 changed files with 76 additions and 7 deletions

View File

@ -0,0 +1,19 @@
#pragma once
#include "SequentialTask.h"
/* This task type will attempt to do run each of it's subtasks in sequence,
* until one of them succeeds. When that happens, the remaining tasks will not run.
* */
class MultipleOptionsTask : public SequentialTask
{
Q_OBJECT
public:
explicit MultipleOptionsTask(QObject *parent = nullptr, const QString& task_name = "");
virtual ~MultipleOptionsTask() = default;
private
slots:
void startNext() override;
void subTaskFailed(const QString &msg) override;
};