WPILibC++  2019.3.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
wpi::uv::Async< T > Class Template Referencefinal

Async handle. More...

#include <Async.h>

Inheritance diagram for wpi::uv::Async< T >:
wpi::uv::HandleImpl< Async< T...>, uv_async_t > wpi::uv::Handle

Public Member Functions

 Async (const std::shared_ptr< Loop > &loop, const private_init &)
 
template<typename... U>
void Send (U &&...u)
 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_tGetRaw () const noexcept
 Get the underlying handle data structure. More...
 
- Public Member Functions inherited from wpi::uv::Handle
 Handle (const Handle &)=delete
 
 Handle (Handle &&)=delete
 
Handleoperator= (const Handle &)=delete
 
Handleoperator= (Handle &&)=delete
 
Type GetType () const noexcept
 Get the type of the handle. More...
 
StringRef GetTypeName () const noexcept
 Get the name of the type of the handle. More...
 
std::shared_ptr< LoopGetLoop () const noexcept
 Get the loop where this handle runs. More...
 
LoopGetLoopRef () 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 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_tGetRawHandle () 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)
 Report an error. More...
 

Static Public Member Functions

static std::shared_ptr< AsyncCreate (Loop &loop)
 Create an async handle. More...
 
static std::shared_ptr< AsyncCreate (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.
 
- Public Attributes inherited from wpi::uv::Handle
sig::Signal< Errorerror
 Error signal.
 
sig::Signal closed
 Closed signal.
 

Additional Inherited Members

- Public Types inherited from wpi::uv::Handle
using Type = uv_handle_type
 
- 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)
 
- 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)
 

Detailed Description

template<typename... T>
class wpi::uv::Async< T >

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).

Member Function Documentation

template<typename... T>
static std::shared_ptr<Async> wpi::uv::Async< T >::Create ( Loop loop)
inlinestatic

Create an async handle.

Parameters
loopLoop object where this handle runs.
template<typename... T>
static std::shared_ptr<Async> wpi::uv::Async< T >::Create ( const std::shared_ptr< Loop > &  loop)
inlinestatic

Create an async handle.

Parameters
loopLoop object where this handle runs.
template<typename... T>
template<typename... U>
void wpi::uv::Async< T >::Send ( U &&...  u)
inline

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.


The documentation for this class was generated from the following file: