WPILibC++ 2023.4.3
wpi::uv::Timer Class Referencefinal

Timer handle. More...

#include <wpinet/uv/Timer.h>

Inheritance diagram for wpi::uv::Timer:
wpi::uv::HandleImpl< Timer, uv_timer_t > wpi::uv::Handle

Public Types

using Time = std::chrono::duration< uint64_t, std::milli >
 
- Public Types inherited from wpi::uv::Handle
using Type = uv_handle_type
 

Public Member Functions

 Timer (const private_init &)
 
 ~Timer () noexcept override=default
 
void Start (Time timeout, Time repeat=Time{0})
 Start the timer. More...
 
void Stop ()
 Stop the timer. More...
 
void Again ()
 Stop the timer and restart it if it was repeating. More...
 
void SetRepeat (Time repeat)
 Set the repeat interval value. More...
 
Time GetRepeat () const
 Get the timer repeat value. More...
 
Time GetDueIn () const
 Get the timer due value or 0 if it has expired. More...
 
- Public Member Functions inherited from wpi::uv::HandleImpl< Timer, uv_timer_t >
std::shared_ptr< Timershared_from_this ()
 
std::shared_ptr< const Timershared_from_this () const
 
uv_timer_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
 
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< 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 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_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) const
 Report an error. More...
 

Static Public Member Functions

static std::shared_ptr< TimerCreate (Loop &loop)
 Create a timer handle. More...
 
static std::shared_ptr< TimerCreate (const std::shared_ptr< Loop > &loop)
 Create a timer handle. More...
 
static void SingleShot (Loop &loop, Time timeout, std::function< void()> func)
 Create a timer that calls a functor after a given time interval. More...
 
static void SingleShot (const std::shared_ptr< Loop > &loop, Time timeout, std::function< void()> func)
 Create a timer that calls a functor after a given time interval. More...
 

Public Attributes

sig::Signal timeout
 Signal generated when the timeout event occurs. More...
 
- Public Attributes inherited from wpi::uv::Handle
sig::Signal< Errorerror
 Error signal. More...
 
sig::Signal closed
 Closed signal. More...
 

Additional Inherited Members

- Protected Member Functions inherited from wpi::uv::HandleImpl< Timer, uv_timer_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)
 

Detailed Description

Timer handle.

Timer handles are used to schedule signals to be called in the future.

Member Typedef Documentation

◆ Time

using wpi::uv::Timer::Time = std::chrono::duration<uint64_t, std::milli>

Constructor & Destructor Documentation

◆ Timer()

wpi::uv::Timer::Timer ( const private_init &  )
inlineexplicit

◆ ~Timer()

wpi::uv::Timer::~Timer ( )
overridedefaultnoexcept

Member Function Documentation

◆ Again()

void wpi::uv::Timer::Again ( )
inline

Stop the timer and restart it if it was repeating.

Stop the timer, and if it is repeating restart it using the repeat value as the timeout. If the timer has never been started before it emits sigError.

◆ Create() [1/2]

static std::shared_ptr< Timer > wpi::uv::Timer::Create ( const std::shared_ptr< Loop > &  loop)
inlinestatic

Create a timer handle.

Parameters
loopLoop object where this handle runs.

◆ Create() [2/2]

static std::shared_ptr< Timer > wpi::uv::Timer::Create ( Loop loop)
static

Create a timer handle.

Parameters
loopLoop object where this handle runs.

◆ GetDueIn()

Time wpi::uv::Timer::GetDueIn ( ) const
inline

Get the timer due value or 0 if it has expired.

The time is relative to uv_now().

Returns
Timer due value in milliseconds (as a std::chrono::duration<uint64_t, std::milli>).

◆ GetRepeat()

Time wpi::uv::Timer::GetRepeat ( ) const
inline

Get the timer repeat value.

Returns
Timer repeat value in milliseconds (as a std::chrono::duration<uint64_t, std::milli>).

◆ SetRepeat()

void wpi::uv::Timer::SetRepeat ( Time  repeat)
inline

Set the repeat interval value.

The timer will be scheduled to run on the given interval and will follow normal timer semantics in the case of a time-slice overrun. For example, if a 50ms repeating timer first runs for 17ms, it will be scheduled to run again 33ms later. If other tasks consume more than the 33ms following the first timer event, then another event will be emitted as soon as possible.

If the repeat value is set from a listener bound to an event, it does not immediately take effect. If the timer was non-repeating before, it will have been stopped. If it was repeating, then the old repeat value will have been used to schedule the next timeout.

Parameters
repeatRepeat interval in milliseconds (use std::chrono::duration<uint64_t, std::milli>).

◆ SingleShot() [1/2]

static void wpi::uv::Timer::SingleShot ( const std::shared_ptr< Loop > &  loop,
Time  timeout,
std::function< void()>  func 
)
inlinestatic

Create a timer that calls a functor after a given time interval.

Parameters
loopLoop object where the timer should run.
timeoutTime interval
funcFunctor

◆ SingleShot() [2/2]

static void wpi::uv::Timer::SingleShot ( Loop loop,
Time  timeout,
std::function< void()>  func 
)
static

Create a timer that calls a functor after a given time interval.

Parameters
loopLoop object where the timer should run.
timeoutTime interval
funcFunctor

◆ Start()

void wpi::uv::Timer::Start ( Time  timeout,
Time  repeat = Time{0} 
)

Start the timer.

If timeout is zero, an event is emitted on the next event loop iteration. If repeat is non-zero, an event is emitted first after timeout milliseconds and then repeatedly after repeat milliseconds.

Parameters
timeoutMilliseconds before to emit an event (use std::chrono::duration<uint64_t, std::milli>).
repeatMilliseconds between successive events (use std::chrono::duration<uint64_t, std::milli>).

◆ Stop()

void wpi::uv::Timer::Stop ( )
inline

Stop the timer.

Member Data Documentation

◆ timeout

sig::Signal wpi::uv::Timer::timeout

Signal generated when the timeout event occurs.


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