WPILibC++ 2023.4.3
|
#include <wpinet/uv/Async.h>
Public Member Functions | |
Async (const std::shared_ptr< Loop > &loop, const private_init &) | |
~Async () noexcept override | |
template<typename... U> | |
void | Send (U &&... u) |
Wakeup the event loop and emit the event. More... | |
void | UnsafeSend () |
Wakeup the event loop and emit the event. More... | |
Public Member Functions inherited from wpi::uv::HandleImpl< Async< T... >, uv_async_t > | |
std::shared_ptr< Async< T... > > | shared_from_this () |
std::shared_ptr< const Async< 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 | ReportError (int err) const |
Report an error. More... | |
Static Public Member Functions | |
static std::shared_ptr< Async > | Create (Loop &loop) |
Create an async handle. More... | |
static std::shared_ptr< Async > | Create (const std::shared_ptr< Loop > &loop) |
Create an async handle. More... | |
Public Attributes | |
sig::Signal< T... > | wakeup |
Signal generated (on event loop thread) when the async event occurs. 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< Async< 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) |
Async handle.
Async handles allow the user to "wakeup" the event loop and have a signal generated from another thread.
Data may be passed into the callback called on the event loop by using template parameters. If data parameters are used, the async callback will be called once for every call to Send(). If no data parameters are used, the async callback may or may not be called for every call to Send() (e.g. the calls may be coaleasced).
|
inline |
|
inlineoverridenoexcept |
|
inlinestatic |
Create an async handle.
loop | Loop object where this handle runs. |
|
inlinestatic |
Create an async handle.
loop | Loop object where this handle runs. |
Wakeup the event loop and emit the event.
It’s safe to call this function from any thread including the loop thread. An async event will be emitted on the loop thread.
|
inline |
Wakeup the event loop and emit the event.
This function assumes the loop still exists, which makes it a bit faster.
It’s safe to call this function from any thread. An async event will be emitted on the loop thread.
sig::Signal<T...> wpi::uv::Async< T >::wakeup |
Signal generated (on event loop thread) when the async event occurs.