MCPcopy Create free account
hub / github.com/boostorg/asio / async_wait_twice

Function async_wait_twice

example/cpp14/deferred/deferred_7.cpp:18–48  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

16
17template <typename CompletionToken>
18auto async_wait_twice(boost::asio::steady_timer& timer, CompletionToken&& token)
19{
20 return deferred.values(&timer)
21 | deferred(
22 [](boost::asio::steady_timer* timer)
23 {
24 timer->expires_after(std::chrono::seconds(1));
25 return timer->async_wait(append(deferred, timer));
26 }
27 )
28 | deferred(
29 [](boost::system::error_code ec, boost::asio::steady_timer* timer)
30 {
31 std::cout << "first timer wait finished: " << ec.message() << "\n";
32 timer->expires_after(std::chrono::seconds(1));
33 return deferred.when(!ec)
34 .then(timer->async_wait(deferred))
35 .otherwise(deferred.values(ec));
36 }
37 )
38 | deferred(
39 [](boost::system::error_code ec)
40 {
41 std::cout << "second timer wait finished: " << ec.message() << "\n";
42 return deferred.when(!ec)
43 .then(deferred.values(42))
44 .otherwise(deferred.values(0));
45 }
46 )
47 | std::forward<CompletionToken>(token);
48}
49
50int main()
51{

Callers 1

mainFunction · 0.70

Calls 4

valuesMethod · 0.80
whenMethod · 0.80
expires_afterMethod · 0.45
async_waitMethod · 0.45

Tested by

no test coverage detected