Provides waitable timer functionality. More...
#include <basic_deadline_timer.hpp>
Public Types | |
typedef traits_type::duration_type | duration_type |
The duration type. | |
typedef traits_type::time_type | time_type |
The time type. | |
typedef TimeTraits | traits_type |
The time traits type. | |
Public Member Functions | |
template<typename WaitHandler > | |
void | async_wait (WaitHandler handler) |
Start an asynchronous wait on the timer. | |
basic_deadline_timer (asio::io_service &io_service) | |
Constructor. | |
basic_deadline_timer (asio::io_service &io_service, const time_type &expiry_time) | |
Constructor to set a particular expiry time as an absolute time. | |
basic_deadline_timer (asio::io_service &io_service, const duration_type &expiry_time) | |
Constructor to set a particular expiry time relative to now. | |
std::size_t | cancel () |
Cancel any asynchronous operations that are waiting on the timer. | |
std::size_t | cancel (asio::error_code &ec) |
Cancel any asynchronous operations that are waiting on the timer. | |
time_type | expires_at () const |
Get the timer's expiry time as an absolute time. | |
std::size_t | expires_at (const time_type &expiry_time) |
Set the timer's expiry time as an absolute time. | |
std::size_t | expires_at (const time_type &expiry_time, asio::error_code &ec) |
Set the timer's expiry time as an absolute time. | |
duration_type | expires_from_now () const |
Get the timer's expiry time relative to now. | |
std::size_t | expires_from_now (const duration_type &expiry_time) |
Set the timer's expiry time relative to now. | |
std::size_t | expires_from_now (const duration_type &expiry_time, asio::error_code &ec) |
Set the timer's expiry time relative to now. | |
void | wait () |
Perform a blocking wait on the timer. | |
void | wait (asio::error_code &ec) |
Perform a blocking wait on the timer. |
Provides waitable timer functionality.
The basic_deadline_timer class template provides the ability to perform a blocking or asynchronous wait for a timer to expire.
Most applications will use the asio::deadline_timer typedef.
// Construct a timer without setting an expiry time. asio::deadline_timer timer(io_service); // Set an expiry time relative to now. timer.expires_from_now(boost::posix_time::seconds(5)); // Wait for the timer to expire. timer.wait();
void handler(const asio::error_code& error) { if (!error) { // Timer expired. } } ... // Construct a timer with an absolute expiry time. asio::deadline_timer timer(io_service, boost::posix_time::time_from_string("2005-12-07 23:59:59.000")); // Start an asynchronous wait. timer.async_wait(handler);
Changing the expiry time of a timer while there are pending asynchronous waits causes those wait operations to be cancelled. To ensure that the action associated with the timer is performed only once, use something like this: used:
void on_some_event() { if (my_timer.expires_from_now(seconds(5)) > 0) { // We managed to cancel the timer. Start new asynchronous wait. my_timer.async_wait(on_timeout); } else { // Too late, timer has already expired! } } void on_timeout(const asio::error_code& e) { if (e != asio::error::operation_aborted) { // Timer was not cancelled, take necessary action. } }
Definition at line 119 of file basic_deadline_timer.hpp.
typedef traits_type::duration_type asio::basic_deadline_timer< Time, TimeTraits, TimerService >::duration_type |
The duration type.
Definition at line 130 of file basic_deadline_timer.hpp.
typedef traits_type::time_type asio::basic_deadline_timer< Time, TimeTraits, TimerService >::time_type |
The time type.
Definition at line 127 of file basic_deadline_timer.hpp.
typedef TimeTraits asio::basic_deadline_timer< Time, TimeTraits, TimerService >::traits_type |
The time traits type.
Definition at line 124 of file basic_deadline_timer.hpp.
asio::basic_deadline_timer< Time, TimeTraits, TimerService >::basic_deadline_timer | ( | asio::io_service & | io_service | ) | [inline, explicit] |
Constructor.
This constructor creates a timer without setting an expiry time. The expires_at() or expires_from_now() functions must be called to set an expiry time before the timer can be waited on.
io_service | The io_service object that the timer will use to dispatch handlers for any asynchronous operations performed on the timer. |
Definition at line 141 of file basic_deadline_timer.hpp.
asio::basic_deadline_timer< Time, TimeTraits, TimerService >::basic_deadline_timer | ( | asio::io_service & | io_service, |
const time_type & | expiry_time | ||
) | [inline] |
Constructor to set a particular expiry time as an absolute time.
This constructor creates a timer and sets the expiry time.
io_service | The io_service object that the timer will use to dispatch handlers for any asynchronous operations performed on the timer. |
expiry_time | The expiry time to be used for the timer, expressed as an absolute time. |
Definition at line 156 of file basic_deadline_timer.hpp.
asio::basic_deadline_timer< Time, TimeTraits, TimerService >::basic_deadline_timer | ( | asio::io_service & | io_service, |
const duration_type & | expiry_time | ||
) | [inline] |
Constructor to set a particular expiry time relative to now.
This constructor creates a timer and sets the expiry time.
io_service | The io_service object that the timer will use to dispatch handlers for any asynchronous operations performed on the timer. |
expiry_time | The expiry time to be used for the timer, relative to now. |
Definition at line 175 of file basic_deadline_timer.hpp.
void asio::basic_deadline_timer< Time, TimeTraits, TimerService >::async_wait | ( | WaitHandler | handler | ) | [inline] |
Start an asynchronous wait on the timer.
This function may be used to initiate an asynchronous wait against the timer. It always returns immediately.
For each call to async_wait(), the supplied handler will be called exactly once. The handler will be called when:
handler | The handler to be called when the timer expires. Copies will be made of the handler as required. The function signature of the handler must be: void handler( const asio::error_code& error // Result of operation. ); |
Definition at line 371 of file basic_deadline_timer.hpp.
std::size_t asio::basic_deadline_timer< Time, TimeTraits, TimerService >::cancel | ( | ) | [inline] |
Cancel any asynchronous operations that are waiting on the timer.
This function forces the completion of any pending asynchronous wait operations against the timer. The handler for each cancelled operation will be invoked with the asio::error::operation_aborted error code.
Cancelling the timer does not change the expiry time.
asio::system_error | Thrown on failure. |
Definition at line 196 of file basic_deadline_timer.hpp.
std::size_t asio::basic_deadline_timer< Time, TimeTraits, TimerService >::cancel | ( | asio::error_code & | ec | ) | [inline] |
Cancel any asynchronous operations that are waiting on the timer.
This function forces the completion of any pending asynchronous wait operations against the timer. The handler for each cancelled operation will be invoked with the asio::error::operation_aborted error code.
Cancelling the timer does not change the expiry time.
ec | Set to indicate what error occurred, if any. |
Definition at line 216 of file basic_deadline_timer.hpp.
time_type asio::basic_deadline_timer< Time, TimeTraits, TimerService >::expires_at | ( | ) | const [inline] |
Get the timer's expiry time as an absolute time.
This function may be used to obtain the timer's current expiry time. Whether the timer has expired or not does not affect this value.
Definition at line 226 of file basic_deadline_timer.hpp.
std::size_t asio::basic_deadline_timer< Time, TimeTraits, TimerService >::expires_at | ( | const time_type & | expiry_time | ) | [inline] |
Set the timer's expiry time as an absolute time.
This function sets the expiry time. Any pending asynchronous wait operations will be cancelled. The handler for each cancelled operation will be invoked with the asio::error::operation_aborted error code.
expiry_time | The expiry time to be used for the timer. |
asio::system_error | Thrown on failure. |
Definition at line 243 of file basic_deadline_timer.hpp.
std::size_t asio::basic_deadline_timer< Time, TimeTraits, TimerService >::expires_at | ( | const time_type & | expiry_time, |
asio::error_code & | ec | ||
) | [inline] |
Set the timer's expiry time as an absolute time.
This function sets the expiry time. Any pending asynchronous wait operations will be cancelled. The handler for each cancelled operation will be invoked with the asio::error::operation_aborted error code.
expiry_time | The expiry time to be used for the timer. |
ec | Set to indicate what error occurred, if any. |
Definition at line 264 of file basic_deadline_timer.hpp.
duration_type asio::basic_deadline_timer< Time, TimeTraits, TimerService >::expires_from_now | ( | ) | const [inline] |
Get the timer's expiry time relative to now.
This function may be used to obtain the timer's current expiry time. Whether the timer has expired or not does not affect this value.
Definition at line 275 of file basic_deadline_timer.hpp.
std::size_t asio::basic_deadline_timer< Time, TimeTraits, TimerService >::expires_from_now | ( | const duration_type & | expiry_time | ) | [inline] |
Set the timer's expiry time relative to now.
This function sets the expiry time. Any pending asynchronous wait operations will be cancelled. The handler for each cancelled operation will be invoked with the asio::error::operation_aborted error code.
expiry_time | The expiry time to be used for the timer. |
asio::system_error | Thrown on failure. |
Definition at line 292 of file basic_deadline_timer.hpp.
std::size_t asio::basic_deadline_timer< Time, TimeTraits, TimerService >::expires_from_now | ( | const duration_type & | expiry_time, |
asio::error_code & | ec | ||
) | [inline] |
Set the timer's expiry time relative to now.
This function sets the expiry time. Any pending asynchronous wait operations will be cancelled. The handler for each cancelled operation will be invoked with the asio::error::operation_aborted error code.
expiry_time | The expiry time to be used for the timer. |
ec | Set to indicate what error occurred, if any. |
Definition at line 313 of file basic_deadline_timer.hpp.
void asio::basic_deadline_timer< Time, TimeTraits, TimerService >::wait | ( | ) | [inline] |
Perform a blocking wait on the timer.
This function is used to wait for the timer to expire. This function blocks and does not return until the timer has expired.
asio::system_error | Thrown on failure. |
Definition at line 327 of file basic_deadline_timer.hpp.
void asio::basic_deadline_timer< Time, TimeTraits, TimerService >::wait | ( | asio::error_code & | ec | ) | [inline] |
Perform a blocking wait on the timer.
This function is used to wait for the timer to expire. This function blocks and does not return until the timer has expired.
ec | Set to indicate what error occurred, if any. |
Definition at line 341 of file basic_deadline_timer.hpp.