proxygen
folly::coro::detail::InlineTask< T >::Awaiter Class Reference

#include <InlineTask.h>

Public Member Functions

 ~Awaiter ()
 
bool await_ready () noexcept
 
handle_t await_suspend (std::experimental::coroutine_handle<> awaitingCoroutine) noexcept
 
T await_resume ()
 

Private Member Functions

 Awaiter (handle_t coro) noexcept
 

Private Attributes

handle_t coro_
 

Friends

class InlineTask< T >
 

Detailed Description

template<typename T>
class folly::coro::detail::InlineTask< T >::Awaiter

Definition at line 178 of file InlineTask.h.

Constructor & Destructor Documentation

template<typename T>
folly::coro::detail::InlineTask< T >::Awaiter::~Awaiter ( )
inline

Definition at line 180 of file InlineTask.h.

180  {
181  if (coro_) {
182  coro_.destroy();
183  }
184  }
template<typename T>
folly::coro::detail::InlineTask< T >::Awaiter::Awaiter ( handle_t  coro)
inlineexplicitprivatenoexcept

Definition at line 205 of file InlineTask.h.

Member Function Documentation

template<typename T>
bool folly::coro::detail::InlineTask< T >::Awaiter::await_ready ( )
inlinenoexcept

Definition at line 186 of file InlineTask.h.

186  {
187  return false;
188  }
template<typename T>
T folly::coro::detail::InlineTask< T >::Awaiter::await_resume ( )
inline

Definition at line 197 of file InlineTask.h.

References destroy(), folly::exchange(), and folly::makeGuard().

197  {
198  auto destroyOnExit =
199  folly::makeGuard([this] { std::exchange(coro_, {}).destroy(); });
200  return coro_.promise().result();
201  }
static void destroy()
FOLLY_NODISCARD detail::ScopeGuardImplDecay< F, true > makeGuard(F &&f) noexcept(noexcept(detail::ScopeGuardImplDecay< F, true >(static_cast< F && >(f))))
Definition: ScopeGuard.h:184
T exchange(T &obj, U &&new_value)
Definition: Utility.h:120
template<typename T>
handle_t folly::coro::detail::InlineTask< T >::Awaiter::await_suspend ( std::experimental::coroutine_handle<>  awaitingCoroutine)
inlinenoexcept

Definition at line 190 of file InlineTask.h.

191  {
192  assert(coro_ && !coro_.done());
193  coro_.promise().set_continuation(awaitingCoroutine);
194  return coro_;
195  }

Friends And Related Function Documentation

template<typename T>
friend class InlineTask< T >
friend

Definition at line 204 of file InlineTask.h.

Member Data Documentation

template<typename T>
handle_t folly::coro::detail::InlineTask< T >::Awaiter::coro_
private

Definition at line 206 of file InlineTask.h.


The documentation for this class was generated from the following file: