userver
C++ Async Framework (beta)
Loading...
Searching...
No Matches
userver
testsuite
periodic_task_control.hpp
Go to the documentation of this file.
1
#pragma once
2
5
6
#include <unordered_map>
7
#include <unordered_set>
8
#include <vector>
9
10
#include <userver/concurrent/variable.hpp>
11
12
USERVER_NAMESPACE_BEGIN
13
14
namespace
utils
{
15
class
PeriodicTask;
16
}
// namespace utils
17
18
namespace
testsuite
{
19
22
class
PeriodicTaskControl
final {
23
public
:
24
bool
RunPeriodicTask(
const
std::string& name);
25
void
SuspendPeriodicTasks(
const
std::unordered_set<std::string>& names);
26
27
private
:
28
friend
class
PeriodicTaskRegistrationHolder
;
29
30
void
RegisterPeriodicTask(
const
std::string& name,
utils::PeriodicTask
& task);
31
32
void
UnregisterPeriodicTask(
const
std::string& name,
33
utils::PeriodicTask
& task);
34
35
utils::PeriodicTask
& FindPeriodicTask(
const
std::string& name);
36
37
concurrent::Variable<std::unordered_map<std::string, utils::PeriodicTask&>
>
38
periodic_tasks_;
39
};
40
42
class
PeriodicTaskRegistrationHolder
{
43
public
:
44
PeriodicTaskRegistrationHolder
(
PeriodicTaskControl
& periodic_task_control,
45
std::string name,
utils::PeriodicTask
& task);
46
~PeriodicTaskRegistrationHolder
();
47
48
PeriodicTaskRegistrationHolder
(
const
PeriodicTaskRegistrationHolder
&) =
49
delete
;
50
PeriodicTaskRegistrationHolder
(
PeriodicTaskRegistrationHolder
&&) =
delete
;
51
PeriodicTaskRegistrationHolder
& operator=(
52
const
PeriodicTaskRegistrationHolder
&) =
delete
;
53
PeriodicTaskRegistrationHolder
& operator=(
PeriodicTaskRegistrationHolder
&&) =
54
delete
;
55
56
private
:
57
PeriodicTaskControl
& periodic_task_control_;
58
std::string name_;
59
utils::PeriodicTask
& task_;
60
};
61
62
}
// namespace testsuite
63
64
USERVER_NAMESPACE_END
Generated on Tue Mar 14 2023 16:21:23 for userver by
Doxygen
1.9.6