-
- Downloads
[IO] add callback support
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.
Showing
- emper/io/Future.hpp 34 additions, 4 deletionsemper/io/Future.hpp
- emper/io/IoContext.cpp 58 additions, 24 deletionsemper/io/IoContext.cpp
- emper/lib/TaggedPtr.hpp 98 additions, 0 deletionsemper/lib/TaggedPtr.hpp
- tests/FutureCallbackTest.cpp 30 additions, 0 deletionstests/FutureCallbackTest.cpp
- tests/meson.build 7 additions, 0 deletionstests/meson.build
Loading
Please register or sign in to comment