24#ifndef ROUTER_SRC_ROUTER_INCLUDE_HELPER_WAIT_VARIABLE_H_
25#define ROUTER_SRC_ROUTER_INCLUDE_HELPER_WAIT_VARIABLE_H_
27#include <initializer_list>
33template <
typename ValueType>
44 template <
typename Container = std::initializer_list<ValueType>,
45 typename Callback = DoNothing>
46 bool exchange(
const Container &expected,
const ValueType &v,
50 [&expected, &v, &after_set_callback, &
result](
auto &value,
auto &cv) {
62 template <
typename Callback = DoNothing>
63 bool exchange(
const ValueType &expected,
const ValueType &v,
67 [&expected, &v, &after_set_callback, &
result](
auto &value,
auto &cv) {
68 if (expected == value) {
79 template <
typename Callback = DoNothing>
83 [&
result, &after_get_callback](
auto ¤t_value,
auto &) {
91 template <
typename Callback = DoNothing>
92 void set(
const ValueType &v,
95 [&v, &after_set_callback](
auto &value,
auto &cv) {
102 template <
typename Callback>
105 [&set_callback](
auto &value,
auto &cv) {
111 template <
typename Callback = DoNothing>
112 bool is(std::initializer_list<ValueType> expected_values,
116 [
this, &
result, &expected_values, &after_is_callback](
117 auto ¤t_value,
auto &) {
119 if (
result) after_is_callback();
124 template <
typename Callback = DoNothing>
125 bool is(
const ValueType &expected_value,
129 [&
result, &expected_value, &after_is_callback](
auto ¤t_value,
131 result = (expected_value == current_value);
132 if (
result) after_is_callback();
137 template <
typename Callback = DoNothing>
138 void wait(
const ValueType &expected_value,
141 [&expected_value, &callback](
const auto ¤t_value) {
142 if (expected_value == current_value) {
150 template <
typename Callback = DoNothing>
151 ValueType
wait(std::initializer_list<ValueType> expected_values,
155 [&expected_values, &callback, &
result](
const auto ¤t_value) {
167 template <
class Rep,
class Period,
typename Callback = DoNothing>
168 bool wait_for(
const std::chrono::duration<Rep, Period> &rel_time,
169 const ValueType &expected_value,
172 rel_time, [
this, expected_value, &callback](
auto ¤t_value) {
173 if (current_value == expected_value) {
181 template <
class Rep,
class Period,
typename Callback = DoNothing>
183 const std::chrono::duration<Rep, Period> &rel_time,
184 std::initializer_list<ValueType> expected_values,
188 rel_time, [
this, &expected_values, &
result,
189 &callback](
const auto ¤t_value) {
190 if (helper::container::has(expected_values, current_value)) {
191 result = current_value;
Class that stores callback function reference as well as the result of the callback function call (in...
Definition: keyring_service.cc:43
Monitor can be waited for.
Definition: monitor.h:62
Definition: wait_variable.h:39
void operator()() const
Definition: wait_variable.h:41
Definition: wait_variable.h:34
WaitableMonitor< ValueType > monitor_with_value_
Definition: wait_variable.h:204
bool is(std::initializer_list< ValueType > expected_values, const Callback &after_is_callback=Callback())
Definition: wait_variable.h:112
void change(const Callback &set_callback)
Definition: wait_variable.h:103
WaitableVariable()
Definition: wait_variable.h:36
WaitableVariable(const ValueType &value)
Definition: wait_variable.h:37
ValueType get(const Callback &after_get_callback=DoNothing())
Definition: wait_variable.h:80
void wait(const ValueType &expected_value, const Callback &callback=Callback())
Definition: wait_variable.h:138
ValueType wait(std::initializer_list< ValueType > expected_values, const Callback &callback=Callback())
Definition: wait_variable.h:151
stdx::expected< ValueType, bool > wait_for(const std::chrono::duration< Rep, Period > &rel_time, std::initializer_list< ValueType > expected_values, const Callback &callback=Callback())
Definition: wait_variable.h:182
bool exchange(const Container &expected, const ValueType &v, const Callback &after_set_callback=DoNothing())
Definition: wait_variable.h:46
bool is(const ValueType &expected_value, const Callback &after_is_callback=Callback())
Definition: wait_variable.h:125
bool wait_for(const std::chrono::duration< Rep, Period > &rel_time, const ValueType &expected_value, const Callback &callback=Callback())
Definition: wait_variable.h:168
bool exchange(const ValueType &expected, const ValueType &v, const Callback &after_set_callback=DoNothing())
Definition: wait_variable.h:63
void set(const ValueType &v, const Callback &after_set_callback=DoNothing())
Definition: wait_variable.h:92
Definition: expected.h:284
bool has(const Container &c, Value &&val)
Definition: generic.h:97
constexpr unexpect_t unexpect
Definition: expected.h:109
struct result result
Definition: result.h:34