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