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