WPILibC++ 2024.3.2
|
Function async handle. More...
#include <wpinet/uv/AsyncFunction.h>
Public Member Functions | |
AsyncFunction (const std::shared_ptr< Loop > &loop, std::function< void(promise< R >, T...)> func, const private_init &) | |
~AsyncFunction () noexcept override | |
template<typename... U> | |
future< R > | Call (U &&... u) |
Wakeup the event loop, call the async function, and return a future for the result. More... | |
template<typename... U> | |
future< R > | operator() (U &&... u) |
Public Member Functions inherited from wpi::uv::HandleImpl< AsyncFunction< R(T...)>, uv_async_t > | |
std::shared_ptr< AsyncFunction< R(T...)> > | shared_from_this () |
std::shared_ptr< const AsyncFunction< R(T...)> > | shared_from_this () const |
uv_async_t * | GetRaw () const noexcept |
Get the underlying handle data structure. More... | |
Public Member Functions inherited from wpi::uv::Handle | |
Handle (const Handle &)=delete | |
Handle (Handle &&)=delete | |
Handle & | operator= (const Handle &)=delete |
Handle & | operator= (Handle &&)=delete |
virtual | ~Handle () noexcept |
Type | GetType () const noexcept |
Get the type of the handle. More... | |
std::string_view | GetTypeName () const noexcept |
Get the name of the type of the handle. More... | |
std::shared_ptr< Loop > | GetLoop () const noexcept |
Get the loop where this handle runs. More... | |
Loop & | GetLoopRef () const noexcept |
Get the loop where this handle runs. More... | |
bool | IsActive () const noexcept |
Check if the handle is active. More... | |
bool | IsClosing () const noexcept |
Check if a handle is closing or closed. More... | |
void | Close () noexcept |
Request handle to be closed. More... | |
void | SetLoopClosing (bool loopClosing) noexcept |
Set if the loop is closing. More... | |
bool | IsLoopClosing () const noexcept |
Get the loop closing status. More... | |
void | Reference () noexcept |
Reference the given handle. More... | |
void | Unreference () noexcept |
Unreference the given handle. More... | |
bool | HasReference () const noexcept |
Check if the given handle is referenced. More... | |
size_t | RawSize () const noexcept |
Return the size of the underlying handle type. More... | |
uv_handle_t * | GetRawHandle () const noexcept |
Get the underlying handle data structure. More... | |
void | SetBufferAllocator (std::function< Buffer(size_t)> alloc, std::function< void(Buffer &)> dealloc) |
Set the functions used for allocating and releasing buffers. More... | |
void | FreeBuf (Buffer &buf) const noexcept |
Free a buffer. More... | |
template<typename T = void> | |
std::shared_ptr< T > | GetData () const |
Gets user-defined data. More... | |
void | SetData (std::shared_ptr< void > data) |
Sets user-defined data. More... | |
void | SetLogger (Logger *logger) |
Sets logger. More... | |
Logger * | GetLogger () const |
Gets logger. More... | |
void | ReportError (int err) const |
Report an error. More... | |
Static Public Member Functions | |
static std::shared_ptr< AsyncFunction > | Create (Loop &loop, std::function< void(promise< R >, T...)> func=nullptr) |
Create an async handle. More... | |
static std::shared_ptr< AsyncFunction > | Create (const std::shared_ptr< Loop > &loop, std::function< void(promise< R >, T...)> func=nullptr) |
Create an async handle. More... | |
Public Attributes | |
std::function< void(promise< R >, T...)> | wakeup |
Function called (on event loop thread) when the async is called. More... | |
Public Attributes inherited from wpi::uv::Handle | |
sig::Signal< Error > | error |
Error signal. More... | |
sig::Signal | closed |
Closed signal. More... | |
Additional Inherited Members | |
Public Types inherited from wpi::uv::Handle | |
using | Type = uv_handle_type |
Protected Member Functions inherited from wpi::uv::HandleImpl< AsyncFunction< R(T...)>, uv_async_t > | |
HandleImpl () | |
Protected Member Functions inherited from wpi::uv::Handle | |
Handle (uv_handle_t *uv_handle) | |
void | Keep () noexcept |
void | Release () noexcept |
void | ForceClosed () noexcept |
template<typename F , typename... Args> | |
bool | Invoke (F &&f, Args &&... args) const |
Static Protected Member Functions inherited from wpi::uv::Handle | |
static void | AllocBuf (uv_handle_t *handle, size_t size, uv_buf_t *buf) |
static void | DefaultFreeBuf (Buffer &buf) |
Function async handle.
Async handles allow the user to "wakeup" the event loop and have a function called from another thread that returns a result to the calling thread.
|
inline |
|
inlineoverridenoexcept |
|
inline |
Wakeup the event loop, call the async function, and return a future for the result.
It’s safe to call this function from any thread including the loop thread. The async function will be called on the loop thread.
The future will return a default-constructed result if this handle is destroyed while waiting for a result.
|
inlinestatic |
Create an async handle.
loop | Loop object where this handle runs. |
func | wakeup function to be called (sets wakeup value); the function needs to return void, and its first parameter is the promise for the result. If no value is set on the promise by the wakeup function, a default-constructed value is "returned". |
|
inlinestatic |
Create an async handle.
loop | Loop object where this handle runs. |
func | wakeup function to be called (sets wakeup value); the function needs to return void, and its first parameter is the promise for the result. If no value is set on the promise by the wakeup function, a default-constructed value is "returned". |
|
inline |
std::function<void(promise<R>, T...)> wpi::uv::AsyncFunction< R(T...)>::wakeup |
Function called (on event loop thread) when the async is called.