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

Function async_wait_twice

example/cpp14/deferred/deferred_6.cpp:18–52  ·  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 )(
29 deferred(
30 [](boost::system::error_code ec, boost::asio::steady_timer* timer)
31 {
32 std::cout << "first timer wait finished: " << ec.message() << "\n";
33 timer->expires_after(std::chrono::seconds(1));
34 return deferred.when(!ec)
35 .then(timer->async_wait(deferred))
36 .otherwise(deferred.values(ec));
37 }
38 )
39 )(
40 deferred(
41 [](boost::system::error_code ec)
42 {
43 std::cout << "second timer wait finished: " << ec.message() << "\n";
44 return deferred.when(!ec)
45 .then(deferred.values(42))
46 .otherwise(deferred.values(0));
47 }
48 )
49 )(
50 std::forward<CompletionToken>(token)
51 );
52}
53
54int main()
55{

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