Chrysalis - CLO3D Extensions
Loading...
Searching...
No Matches
TaskExecutor.h
Go to the documentation of this file.
1#ifndef CHRYSALIS_TASKEXECUTOR_H
2#define CHRYSALIS_TASKEXECUTOR_H
3
4#include <memory>
5#include <functional>
6#include <shared_mutex>
7#include <unordered_map>
8
9#include "BaseTask.h"
11
12namespace CLO3D {
14 public:
15 TaskExecutor() = default;
16
17 TaskExecutor(const TaskExecutor&) = delete;
19
20 void wait(const QString& task);
21 void submit(std::unique_ptr<BaseTask> task);
22 void submit(
23 std::unique_ptr<BaseTask> task,
24 const std::function<void()>& onSuccess,
25 const std::function<void(const BaseTaskException&)>& onException = [](const BaseTaskException&) -> void {}
26 );
27 private:
28 std::shared_mutex mutex_;
29 std::unordered_map<std::string, std::unique_ptr<BaseTask>> tasks_{};
30 };
31}
32
33#endif // CHRYSALIS_TASKEXECUTOR_H
#define CLO3D_EXTENSION
Definition CLO3DExtensionExport.h:12
Definition BaseTaskException.h:12
TaskExecutor(const TaskExecutor &)=delete
TaskExecutor()=default
void wait(const QString &task)
Definition TaskExecutor.cpp:10
TaskExecutor & operator=(const TaskExecutor &)=delete
void submit(std::unique_ptr< BaseTask > task)
Definition TaskExecutor.cpp:21
Definition BaseCommand.h:8