A co_await-able object handling an API call in parallel with the caller.
More...
#include "coro/async.h"
|
| async () noexcept |
| Construct an empty async. More...
|
|
| async (async &&other) noexcept=default |
| Move constructor. More...
|
|
| async (const async &) |
| Copy constructor is disabled. More...
|
|
template<typename Fun , typename... Args> |
| async (Fun &&fun, Args &&... args) |
| Construct an async object wrapping an invokeable object, the call is made immediately by forwarding to std::invoke and can be awaited later to retrieve the result. More...
|
|
template<typename Obj , typename Fun , typename... Args> |
| async (Obj &&obj, Fun &&fun, Args &&... args) |
| Construct an async object wrapping an object method, the call is made immediately by forwarding to std::invoke and can be awaited later to retrieve the result. More...
|
|
| ~async () |
| Destructor. More...
|
|
bool | await_ready () const noexcept |
| Check whether or not co_await-ing this would suspend the caller, i.e. More...
|
|
auto && | operator co_await () &&noexcept |
| Suspend the caller until the request completes. More...
|
|
auto & | operator co_await () &noexcept |
| Suspend the caller until the request completes. More...
|
|
const auto & | operator co_await () const &noexcept |
| Suspend the caller until the request completes. More...
|
|
async & | operator= (async &&other) noexcept=default |
| Move assignment operator. More...
|
|
async & | operator= (const async &)=delete |
| Copy assignment is disabled. More...
|
|
template<typename R>
class dpp::async< R >
A co_await-able object handling an API call in parallel with the caller.
This class is the return type of the dpp::cluster::co_* methods, but it can also be created manually to wrap any async call.
- Warning
- - This feature is EXPERIMENTAL. The API may change at any time and there may be bugs. Please report any to GitHub issues or to the D++ Discord server.
- Template Parameters
-
◆ async() [1/5]
template<typename R >
template<typename Obj , typename Fun , typename... Args>
Construct an async object wrapping an object method, the call is made immediately by forwarding to std::invoke and can be awaited later to retrieve the result.
- Parameters
-
obj | The object to call the method on |
fun | The method of the object to call. Its last parameter must be a callback taking a parameter of type R |
args | Parameters to pass to the method, excluding the callback |
◆ async() [2/5]
template<typename R >
template<typename Fun , typename... Args>
Construct an async object wrapping an invokeable object, the call is made immediately by forwarding to std::invoke and can be awaited later to retrieve the result.
- Parameters
-
fun | The object to call using std::invoke. Its last parameter must be a callable taking a parameter of type R |
args | Parameters to pass to the object, excluding the callback |
◆ async() [3/5]
Construct an empty async.
Using co_await
on an empty async is undefined behavior.
◆ ~async()
Destructor.
If any callback is pending it will be aborted.
◆ async() [4/5]
Copy constructor is disabled.
◆ async() [5/5]
Move constructor.
NOTE: Despite being marked noexcept, this function uses std::lock_guard which may throw. The implementation assumes this can never happen, hence noexcept. Report it if it does, as that would be a bug.
- Parameters
-
other | The async object to move the data from. |
◆ await_ready()
Check whether or not co_await-ing this would suspend the caller, i.e.
if we have the result or not
- Returns
- bool Whether we already have the result of the API call or not
◆ operator co_await() [1/3]
Suspend the caller until the request completes.
- Returns
- On resumption, this expression evaluates to the result object of type R, as an rvalue reference.
◆ operator co_await() [2/3]
Suspend the caller until the request completes.
- Returns
- On resumption, this expression evaluates to the result object of type R, as a reference.
◆ operator co_await() [3/3]
template<typename R >
const auto& dpp::async< R >::operator co_await |
( |
| ) |
const & |
|
inlinenoexcept |
Suspend the caller until the request completes.
- Returns
- On resumption, this expression evaluates to the result object of type R, as a const reference.
◆ operator=() [1/2]
Move assignment operator.
NOTE: Despite being marked noexcept, this function uses std::lock_guard which may throw. The implementation assumes this can never happen, hence noexcept. Report it if it does, as that would be a bug.
- Parameters
-
other | The async object to move the data from |
◆ operator=() [2/2]
Copy assignment is disabled.
◆ detail::async::async_base< R >
Internal use only base class.
It serves to prevent await_suspend and await_resume from being used directly.
- Warning
- For internal use only, do not use.
- See also
- operator co_await()
The documentation for this class was generated from the following file: