class sequencer

Defined at line 41 of file ../../sdk/lib/fit-promise/include/lib/fpromise/sequencer.h

A sequencer imposes a first-in-first-out sequential execution order onto a

sequence of promises. Each successively enqueued promise remains suspended

until all previously enqueued promises complete or are abandoned.

|fpromise::sequencer| is designed to be used either on its own or chained

onto a promise using |fpromise::promise::wrap_with()|.

EXAMPLE

// This wrapper type is intended to be applied to

// a sequence of promises so we store it in a variable.

fpromise::sequencer seq;

// This task consists of some amount of work that must be

// completed sequentially followed by other work that can

// happen in any order. We use |wrap_with()| to wrap the

// sequential work with the sequencer.

fpromise::promise

<

> perform_complex_task() {

return fpromise::make_promise([] { /* do sequential work */ })

.then([] (fpromise::result

<

>

&

result) { /* this will also be wrapped */ })

.wrap_with(seq)

.then([] (fpromise::result

<

>

&

result) { /* do more work */ });

}

Public Methods

void sequencer ()

Defined at line 9 of file ../../sdk/lib/fit-promise/sequencer.cc

void ~sequencer ()

Defined at line 17 of file ../../sdk/lib/fit-promise/sequencer.cc

template <typename Promise>
decltype(auto) wrap (Promise promise)

Returns a new promise which will invoke |promise| after all previously

enqueued promises on this sequencer have completed or been abandoned.

This method is thread-safe.

Defined at line 51 of file ../../sdk/lib/fit-promise/include/lib/fpromise/sequencer.h

void sequencer (const sequencer & )

Defined at line 68 of file ../../sdk/lib/fit-promise/include/lib/fpromise/sequencer.h

void sequencer (sequencer && )

Defined at line 69 of file ../../sdk/lib/fit-promise/include/lib/fpromise/sequencer.h

sequencer & operator= (const sequencer & )

Defined at line 70 of file ../../sdk/lib/fit-promise/include/lib/fpromise/sequencer.h

sequencer & operator= (sequencer && )

Defined at line 71 of file ../../sdk/lib/fit-promise/include/lib/fpromise/sequencer.h