summaryrefslogtreecommitdiff
path: root/src/task_runner.hh
blob: d1c79d6ac3ee1ed44ae7ec73597e9ce18ae2cde3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#ifndef TASK_RUNNER_HH
#define TASK_RUNNER_HH

#include <functional>
#include <memory>

class Looper;

class TaskRunner {
public:
  virtual ~TaskRunner() = default;

  static std::unique_ptr<TaskRunner> create(std::shared_ptr<Looper> looper);
  static std::unique_ptr<TaskRunner> create(size_t threads = 1);

  virtual void post(std::function<void()> callback) = 0;

protected:
  TaskRunner() = default;
  TaskRunner(TaskRunner const&) = delete;
  TaskRunner& operator=(TaskRunner const&) = delete;
};

#endif  // TASK_RUNNER_HH