Skip to content

[IO] add callback support

Florian Fischer requested to merge aj46ezos/emper:future_spawn into master

Futures can have a registered Callback of type std::function<void(const uint32_t&)> which gets called in a new Fiber with the result of the IO Request. Note the first completion will cause the execution of a callback and partial completion support must be implemented manually in the callback.

Callbacks are stored in a heap allocated std::function on registration and are freed by the new Fiber after the callback returned;

The Future with a registered Callback is not referenced in any way in the IO subsystem and therefore can be dropped after being submitted. This also means that a Future with a registered callback will not be signaled by the IO subsystem on completion. If signaling is desired one must implement it manually in the registered callback.

Edited by Florian Fischer

Merge request reports