CCF
Loading...
Searching...
No Matches
fan_in_tasks.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 "tasks/job_board.h"
6#include "tasks/task.h"
7
8#include <memory>
9
10namespace ccf::tasks
11{
12 class FanInTasks : public BaseTask,
13 public std::enable_shared_from_this<FanInTasks>
14 {
15 protected:
16 struct PImpl;
17 std::unique_ptr<PImpl> pimpl = nullptr;
18
19 void enqueue_on_board();
20 void do_task_implementation() override;
21
22 // Non-public constructor argument type, so this can only be constructed by
23 // this class (ensuring shared ptr ownership)
24 struct Private
25 {
26 explicit Private() = default;
27 };
28
29 public:
30 FanInTasks(Private force_private_constructor, JobBoard& job_board_);
31 ~FanInTasks() override;
32
33 static std::shared_ptr<FanInTasks> create(JobBoard& job_board_);
34
35 const std::string& get_name() const override;
36
37 void add_task(size_t task_index, Task task);
38 };
39}
Definition fan_in_tasks.h:14
const std::string & get_name() const override
Definition fan_in_tasks.cpp:79
std::unique_ptr< PImpl > pimpl
Definition fan_in_tasks.h:17
void add_task(size_t task_index, Task task)
Definition fan_in_tasks.cpp:85
void do_task_implementation() override
Definition fan_in_tasks.cpp:32
static std::shared_ptr< FanInTasks > create(JobBoard &job_board_)
Definition fan_in_tasks.cpp:126
void enqueue_on_board()
Definition fan_in_tasks.cpp:27
Definition job_board.h:15
Definition basic_task.h:8
std::shared_ptr< BaseTask > Task
Definition task.h:36
Definition task.h:15
Definition fan_in_tasks.cpp:16
Definition fan_in_tasks.h:25