Provides a timer executing a block or an operation on a specific queue when a timeout occurs. More...
#include <xdispatch/timer.h>
Public Member Functions | |
timer (uint64_t interval, const xdispatch::queue &target=global_queue(), const time &starting=time_now) | |
Constructs a new periodic timer. | |
timer (const timer &) | |
~timer () | |
void | interval (uint64_t) |
Use this to set the interval in nanoseconds. | |
void | latency (uint64_t) |
Use this to set the latency in nanoseconds which the timer might be early or late. | |
void | start () |
Will start the timer. | |
void | stop () |
Will stop the timer. | |
timer & | operator= (const timer &) |
void | resume () |
Resumes the invocation of operations or blocks assigned to the object. | |
void | suspend () |
Suspends the invocation of operations or blocks assigned to the object. | |
void | handler (xdispatch::operation *) |
Sets the handler to dispatch each time the source becomes ready. | |
virtual void | handler (dispatch_block_t b) |
Sets the handler to dispatch each time the source becomes ready. | |
void | target_queue (const xdispatch::queue &) |
Sets the queue the handler will be executed on. | |
xdispatch::queue | target_queue () const |
virtual dispatch_object_t | native () const |
dispatch_source_t | native_source () const |
void | cancel () |
Asynchronously cancels the dispatch source, preventing any further invocation of its event handler block. | |
void | cancel_handler (xdispatch::operation *) |
Sets the cancellation handler block for the given dispatch source. | |
virtual void | cancel_handler (dispatch_block_t b) |
Sets the cancellation handler block for the given dispatch source. | |
bool | operator== (const object &) |
bool | operator== (const dispatch_object_t &) |
bool | operator!= (const object &) |
bool | operator!= (const dispatch_object_t &) |
Static Public Member Functions | |
static timer * | current () |
static void | single_shot (dispatch_time_t, const xdispatch::queue &, xdispatch::operation *) |
Creates a single shot timer executing the given operation on the given queue at the given time. | |
static void | single_shot (struct tm *, const xdispatch::queue &, xdispatch::operation *) |
Creates a single shot timer executing the given operation on the given queue at the given time. | |
static void | single_shot (dispatch_time_t t, const xdispatch::queue &q, dispatch_block_t b) |
Creates a single shot timer executing the given block on the given queue at the given time. | |
static void | single_shot (struct tm *t, const xdispatch::queue &q, dispatch_block_t b) |
Creates a single shot timer executing the given block on the given queue at the given time. | |
template<typename T > | |
static T | data () |
Provides a timer executing a block or an operation on a specific queue when a timeout occurs.
xdispatch::timer::timer | ( | uint64_t | interval, |
const xdispatch::queue & | target = global_queue() , |
||
const time & | starting = time_now |
||
) |
Constructs a new periodic timer.
The timer will be stopped, call start() to execute it
@param interval The interval in nanoseconds at which the timer will fire after the timeout occured. @param target The queue to execute the timer on, defaults to the global_queue @param starting The time at which the timer will fire for the first time
xdispatch::timer::timer | ( | const timer & | ) |
void xdispatch::source::cancel | ( | ) | [inherited] |
Asynchronously cancels the dispatch source, preventing any further invocation of its event handler block.
Cancellation prevents any further invocation of the event handler block for the specified dispatch source, but does not interrupt an event handler block that is already in progress. The optional cancellation handler is submitted to the target queue once the event handler block has been completed.
The cancellation handler is submitted to the source's target queue when the source's event handler has finished, indicating that it is safe to close the source's handle (e.g. file descriptor or mach port if any).
The optional cancellation handler is submitted to the xdispatch::source object's target queue only after the system has released all of its references to any underlying system objects (file descriptors or mach ports). Thus, the cancellation handler is a convenient place to close or deallocate such system objects.
void xdispatch::source::cancel_handler | ( | xdispatch::operation * | ) | [inherited] |
Sets the cancellation handler block for the given dispatch source.
The cancellation handler (if specified) is submitted to the source's target queue in response to a call to dispatch_source_cancel when the system has released all references to the source's underlying handle and the source's event handler block has returned.
virtual void xdispatch::source::cancel_handler | ( | dispatch_block_t | b | ) | [inline, virtual, inherited] |
Sets the cancellation handler block for the given dispatch source.
The cancellation handler (if specified) is submitted to the source's target queue in response to a call to dispatch_source_cancel when the system has released all references to the source's underlying handle and the source's event handler block has returned.
static timer* xdispatch::timer::current | ( | ) | [static] |
Reimplemented in QDispatchTimer.
static T xdispatch::source::data | ( | ) | [inline, static, inherited] |
Pass the type of the data to retrieve as template parameter. If the requested datatype cannot be provided, a bad_cast exception will be thrown.
void xdispatch::source::handler | ( | xdispatch::operation * | ) | [inherited] |
Sets the handler to dispatch each time the source becomes ready.
You can use data() to obtain a pointer to data provided by the source and possibly being the reason for the handler to be dispatched.
virtual void xdispatch::source::handler | ( | dispatch_block_t | b | ) | [inline, virtual, inherited] |
void xdispatch::timer::interval | ( | uint64_t | ) |
Use this to set the interval in nanoseconds.
When called for the first time on a single-shot timer, the timer will be converted to a periodic timer with the given interval.
void xdispatch::timer::latency | ( | uint64_t | ) |
Use this to set the latency in nanoseconds which the timer might be early or late.
When not set the latency will be kept as low as possible.
virtual dispatch_object_t xdispatch::source::native | ( | ) | const [virtual, inherited] |
Implements xdispatch::object.
dispatch_source_t xdispatch::source::native_source | ( | ) | const [inherited] |
bool xdispatch::object::operator!= | ( | const object & | ) | [inherited] |
bool xdispatch::object::operator!= | ( | const dispatch_object_t & | ) | [inherited] |
bool xdispatch::object::operator== | ( | const object & | ) | [inherited] |
bool xdispatch::object::operator== | ( | const dispatch_object_t & | ) | [inherited] |
void xdispatch::source::resume | ( | ) | [virtual, inherited] |
Resumes the invocation of operations or blocks assigned to the object.
Reimplemented from xdispatch::object.
static void xdispatch::timer::single_shot | ( | dispatch_time_t | , |
const xdispatch::queue & | , | ||
xdispatch::operation * | |||
) | [static] |
Creates a single shot timer executing the given operation on the given queue at the given time.
This is quite similar to using xdispatch::queue::after()
static void xdispatch::timer::single_shot | ( | struct tm * | , |
const xdispatch::queue & | , | ||
xdispatch::operation * | |||
) | [static] |
Creates a single shot timer executing the given operation on the given queue at the given time.
This is quite similar to using xdispatch::queue::after()
static void xdispatch::timer::single_shot | ( | dispatch_time_t | t, |
const xdispatch::queue & | q, | ||
dispatch_block_t | b | ||
) | [inline, static] |
Creates a single shot timer executing the given block on the given queue at the given time.
This is quite similar to using xdispatch::queue::after()
static void xdispatch::timer::single_shot | ( | struct tm * | t, |
const xdispatch::queue & | q, | ||
dispatch_block_t | b | ||
) | [inline, static] |
Creates a single shot timer executing the given block on the given queue at the given time.
This is quite similar to using xdispatch::queue::after()
void xdispatch::timer::start | ( | ) | [inline] |
void xdispatch::timer::stop | ( | ) | [inline] |
void xdispatch::source::suspend | ( | ) | [virtual, inherited] |
Suspends the invocation of operations or blocks assigned to the object.
The object will be suspended as soon as the currently executed operation or block finished.
Reimplemented from xdispatch::object.
void xdispatch::source::target_queue | ( | const xdispatch::queue & | ) | [virtual, inherited] |
Sets the queue the handler will be executed on.
Reimplemented from xdispatch::object.
xdispatch::queue xdispatch::source::target_queue | ( | ) | const [inherited] |