Coverage Report

Created: 2025-02-21 14:37

/root/bitcoin/src/util/task_runner.h
Line
Count
Source (jump to first uncovered line)
1
// Copyright (c) 2024-present The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#ifndef BITCOIN_UTIL_TASK_RUNNER_H
6
#define BITCOIN_UTIL_TASK_RUNNER_H
7
8
#include <cstddef>
9
#include <functional>
10
11
namespace util {
12
13
/** @file
14
 * This header provides an interface and simple implementation for a task
15
 * runner. Another threaded, serial implementation using a queue is available in
16
 * the scheduler module's SerialTaskRunner.
17
 */
18
19
class TaskRunnerInterface
20
{
21
public:
22
0
    virtual ~TaskRunnerInterface() = default;
23
24
    /**
25
     * The callback can either be queued for later/asynchronous/threaded
26
     * processing, or be executed immediately for synchronous processing.
27
     */
28
29
    virtual void insert(std::function<void()> func) = 0;
30
31
    /**
32
     * Forces the processing of all pending events.
33
     */
34
    virtual void flush() = 0;
35
36
    /**
37
     * Returns the number of currently pending events.
38
     */
39
    virtual size_t size() = 0;
40
};
41
42
class ImmediateTaskRunner : public TaskRunnerInterface
43
{
44
public:
45
0
    void insert(std::function<void()> func) override { func(); }
46
0
    void flush() override {}
47
0
    size_t size() override { return 0; }
48
};
49
50
} // namespace util
51
52
#endif // BITCOIN_UTIL_TASK_RUNNER_H