/root/bitcoin/src/util/task_runner.h
| Line | Count | Source | 
| 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 | 1 |     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 | 68.2k |     void insert(std::function<void()> func) override { func(); } | 
| 46 | 1 |     void flush() override {} | 
| 47 | 0 |     size_t size() override { return 0; } | 
| 48 |  | }; | 
| 49 |  |  | 
| 50 |  | } // namespace util | 
| 51 |  |  | 
| 52 |  | #endif // BITCOIN_UTIL_TASK_RUNNER_H |