CCF
Loading...
Searching...
No Matches
job_board.h
Go to the documentation of this file.
1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the Apache 2.0 License.
3#pragma once
4
5#include "ds/work_beacon.h"
6#include "tasks/task.h"
7
8#include <mutex>
9#include <optional>
10#include <queue>
11
12namespace ccf::tasks
13{
15 {
16 struct PImpl;
17 std::unique_ptr<PImpl> pimpl = nullptr;
18
19 void add_timed_task(
20 Task task,
21 std::chrono::milliseconds initial_delay,
22 std::optional<std::chrono::milliseconds> periodic_delay);
23
24 public:
25 JobBoard();
27
28 void add_task(Task t);
29 Task get_task();
30
31 Task wait_for_task(const std::chrono::milliseconds& timeout);
32
33 struct Summary
34 {
35 size_t pending_tasks = {};
36 size_t idle_workers = {};
37
38 bool operator==(const Summary&) const = default;
39 };
41
42 void add_delayed_task(Task task, std::chrono::milliseconds delay);
44 Task task,
45 std::chrono::milliseconds initial_delay,
46 std::chrono::milliseconds repeat_period);
47 void tick(std::chrono::milliseconds elapsed);
48 };
49}
Definition job_board.h:15
JobBoard()
Definition job_board.cpp:225
void tick(std::chrono::milliseconds elapsed)
Definition job_board.cpp:268
void add_task(Task t)
Definition job_board.cpp:229
Task wait_for_task(const std::chrono::milliseconds &timeout)
Definition job_board.cpp:239
Summary get_summary()
Definition job_board.cpp:244
void add_periodic_task(Task task, std::chrono::milliseconds initial_delay, std::chrono::milliseconds repeat_period)
Definition job_board.cpp:260
Task get_task()
Definition job_board.cpp:234
void add_delayed_task(Task task, std::chrono::milliseconds delay)
Definition job_board.cpp:255
Definition basic_task.h:8
std::shared_ptr< BaseTask > Task
Definition task.h:36
Definition job_board.cpp:57
Definition job_board.h:34
size_t pending_tasks
Definition job_board.h:35
bool operator==(const Summary &) const =default
size_t idle_workers
Definition job_board.h:36