template <typename ReturnType, typename... Args>
class Callback
Defined at line 36 of file ../../sdk/lib/async_patterns/cpp/callback.h
An asynchronous |Callback| that will always execute on the async dispatcher
associated with a |Receiver|. Invoking this callback translates to posting a
task to the destination dispatcher. It will not block the caller.
The receiver may not necessarily receive the callback. The callback will be
a no-op if:
- The |Receiver| object goes out of scope.
- The async dispatcher of the |Receiver| shuts down.
A callback can only be invoked once. It is akin to a one-shot,
uni-directional channel. Calls posted to the same |Receiver| will be
processed in the order they are made, regardless which |Function|s and
|Callback|s they are made from.
Public Methods
auto operator() (Args... args)
Schedules the callback to be asynchronously run on the receiver's
dispatcher.
See |async_patterns::BindForSending| for detailed requirements on |args|.
This operator returns a pending call. You may either:
- Make a fire-and-forget call, by discarding the returned object, or
- Get a promise carrying the return value of the function by calling
`promise()` on the object, yielding a |fpromise::promise
<ReturnType
>|, or
- Call `Then()` on the object and pass a |Callback
<void
(ReturnType)>|
See |async_patterns::PendingCall| for details.
Example:
async_patterns::Callback
<int
(std::string)> parse = ...;
// Ignore the returned integer.
parse(std::string("abc"));
// Get a promise that will resolve when the function is asynchronously
// executed on the receiver's async dispatcher.
fpromise::promise
<int
> promise = parse(std::string("abc")).promise();
Defined at line 64 of file ../../sdk/lib/async_patterns/cpp/callback.h
auto ignore_result ()
Returns a functor that performs the same actions as this |Callback|, but returns
void, instead of potentially a promise object. This is useful when converting the
|Callback| into a |fit::callback
<void
(ReturnType)|.
Defined at line 74 of file ../../sdk/lib/async_patterns/cpp/callback.h
Friends
template <typename Owner>
class Receiver