userver: userver/engine/task/single_threaded_task_processors_pool.hpp Source File
Loading...
Searching...
No Matches
single_threaded_task_processors_pool.hpp
Go to the documentation of this file.
1#pragma once
2
3/// @file userver/engine/task/single_threaded_task_processors_pool.hpp
4/// @brief @copybrief engine::SingleThreadedTaskProcessorsPool
5
6#include <memory>
7#include <vector>
8
9#include <userver/engine/task/task_processor_fwd.hpp>
10
11USERVER_NAMESPACE_BEGIN
12
13namespace engine {
14
15struct TaskProcessorConfig;
16
17/// @brief Pool of single-threaded TaskProcessors
18class SingleThreadedTaskProcessorsPool final {
19public:
20 // Do NOT use directly! Use components::SingleThreadedTaskProcessors or for
21 // tests and benchmarks use SingleThreadedTaskProcessorsPool::MakeForTests()
22 explicit SingleThreadedTaskProcessorsPool(const engine::TaskProcessorConfig& config_base);
23 ~SingleThreadedTaskProcessorsPool();
24
25 size_t GetSize() const noexcept { return processors_.size(); }
26 engine::TaskProcessor& At(size_t idx) { return *processors_.at(idx); }
27
28 // For tests and benchmarks only
29 static SingleThreadedTaskProcessorsPool MakeForTests(std::size_t worker_threads);
30
31private:
32 std::vector<std::unique_ptr<engine::TaskProcessor>> processors_;
33};
34
35} // namespace engine
36
37USERVER_NAMESPACE_END