Example #1
0
File: when_all.hpp Project: hkr/ltl
 type operator()(future<T> const& x) const
 {
     if (auto&& state = x.get_state(use_private_interface))
         return state->template then<future<void>>(std::bind([](){}));
     else
         return make_ready_future();
 }
Example #2
0
File: await.hpp Project: hkr/ltl
 void apply(future<void> f) const
 {
     if (f.ready())
         return;
     
     task_context* ctx = current_task_context::get();
     if (!ctx)
     {
         f.wait();
         return;
     }
     
     auto&& resume_task = [=]() {
         ctx->resume();
     };
     
     auto s = f.get_state(detail::use_private_interface);
     
     s->continue_with([&]() {
         s->await_queue()->push_front([=]() {
             resume_task();
         });
     });
     
     ctx->yield();
 }