3 <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
4 <title>basic_deadline_timer</title>
5 <link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
6 <meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7 <link rel="home" href="../../boost_asio.html" title="Boost.Asio">
8 <link rel="up" href="../reference.html" title="Reference">
9 <link rel="prev" href="basic_datagram_socket__rebind_executor/other.html" title="basic_datagram_socket::rebind_executor::other">
10 <link rel="next" href="basic_deadline_timer/async_wait.html" title="basic_deadline_timer::async_wait">
12 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13 <table cellpadding="2" width="100%"><tr>
14 <td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
15 <td align="center"><a href="../../../../index.html">Home</a></td>
16 <td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
17 <td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
18 <td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
19 <td align="center"><a href="../../../../more/index.htm">More</a></td>
22 <div class="spirit-nav">
23 <a accesskey="p" href="basic_datagram_socket__rebind_executor/other.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../boost_asio.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="basic_deadline_timer/async_wait.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>
26 <div class="titlepage"><div><div><h3 class="title">
27 <a name="boost_asio.reference.basic_deadline_timer"></a><a class="link" href="basic_deadline_timer.html" title="basic_deadline_timer">basic_deadline_timer</a>
28 </h3></div></div></div>
30 Provides waitable timer functionality.
32 <pre class="programlisting">template<
34 typename <a class="link" href="TimeTraits.html" title="Time traits requirements">TimeTraits</a> = boost::asio::time_traits<Time>,
35 typename <a class="link" href="Executor1.html" title="Executor requirements">Executor</a> = executor>
36 class basic_deadline_timer
39 <a name="boost_asio.reference.basic_deadline_timer.h0"></a>
40 <span class="phrase"><a name="boost_asio.reference.basic_deadline_timer.types"></a></span><a class="link" href="basic_deadline_timer.html#boost_asio.reference.basic_deadline_timer.types">Types</a>
42 <div class="informaltable"><table class="table">
63 <a class="link" href="basic_deadline_timer__rebind_executor.html" title="basic_deadline_timer::rebind_executor"><span class="bold"><strong>rebind_executor</strong></span></a>
68 Rebinds the timer type to another executor.
75 <a class="link" href="basic_deadline_timer/duration_type.html" title="basic_deadline_timer::duration_type"><span class="bold"><strong>duration_type</strong></span></a>
87 <a class="link" href="basic_deadline_timer/executor_type.html" title="basic_deadline_timer::executor_type"><span class="bold"><strong>executor_type</strong></span></a>
92 The type of the executor associated with the object.
99 <a class="link" href="basic_deadline_timer/time_type.html" title="basic_deadline_timer::time_type"><span class="bold"><strong>time_type</strong></span></a>
111 <a class="link" href="basic_deadline_timer/traits_type.html" title="basic_deadline_timer::traits_type"><span class="bold"><strong>traits_type</strong></span></a>
116 The time traits type.
123 <a name="boost_asio.reference.basic_deadline_timer.h1"></a>
124 <span class="phrase"><a name="boost_asio.reference.basic_deadline_timer.member_functions"></a></span><a class="link" href="basic_deadline_timer.html#boost_asio.reference.basic_deadline_timer.member_functions">Member
127 <div class="informaltable"><table class="table">
148 <a class="link" href="basic_deadline_timer/async_wait.html" title="basic_deadline_timer::async_wait"><span class="bold"><strong>async_wait</strong></span></a>
153 Start an asynchronous wait on the timer.
160 <a class="link" href="basic_deadline_timer/basic_deadline_timer.html" title="basic_deadline_timer::basic_deadline_timer"><span class="bold"><strong>basic_deadline_timer</strong></span></a>
165 Constructor. <br> <span class="silver"> —</span><br> Constructor to set a particular expiry
166 time as an absolute time. <br> <span class="silver"> —</span><br> Constructor to set a particular
167 expiry time relative to now. <br> <span class="silver"> —</span><br> Move-construct a basic_deadline_timer
175 <a class="link" href="basic_deadline_timer/cancel.html" title="basic_deadline_timer::cancel"><span class="bold"><strong>cancel</strong></span></a>
180 Cancel any asynchronous operations that are waiting on the timer.
187 <a class="link" href="basic_deadline_timer/cancel_one.html" title="basic_deadline_timer::cancel_one"><span class="bold"><strong>cancel_one</strong></span></a>
192 Cancels one asynchronous operation that is waiting on the timer.
199 <a class="link" href="basic_deadline_timer/expires_at.html" title="basic_deadline_timer::expires_at"><span class="bold"><strong>expires_at</strong></span></a>
204 Get the timer's expiry time as an absolute time. <br> <span class="silver"> —</span><br>
205 Set the timer's expiry time as an absolute time.
212 <a class="link" href="basic_deadline_timer/expires_from_now.html" title="basic_deadline_timer::expires_from_now"><span class="bold"><strong>expires_from_now</strong></span></a>
217 Get the timer's expiry time relative to now. <br> <span class="silver"> —</span><br> Set
218 the timer's expiry time relative to now.
225 <a class="link" href="basic_deadline_timer/get_executor.html" title="basic_deadline_timer::get_executor"><span class="bold"><strong>get_executor</strong></span></a>
230 Get the executor associated with the object.
237 <a class="link" href="basic_deadline_timer/operator_eq_.html" title="basic_deadline_timer::operator="><span class="bold"><strong>operator=</strong></span></a>
242 Move-assign a basic_deadline_timer from another.
249 <a class="link" href="basic_deadline_timer/wait.html" title="basic_deadline_timer::wait"><span class="bold"><strong>wait</strong></span></a>
254 Perform a blocking wait on the timer.
261 <a class="link" href="basic_deadline_timer/_basic_deadline_timer.html" title="basic_deadline_timer::~basic_deadline_timer"><span class="bold"><strong>~basic_deadline_timer</strong></span></a>
273 The <a class="link" href="basic_deadline_timer.html" title="basic_deadline_timer"><code class="computeroutput">basic_deadline_timer</code></a>
274 class template provides the ability to perform a blocking or asynchronous
275 wait for a timer to expire.
278 A deadline timer is always in one of two states: "expired" or "not
279 expired". If the <code class="computeroutput">wait()</code> or <code class="computeroutput">async_wait()</code> function
280 is called on an expired timer, the wait operation will complete immediately.
283 Most applications will use the <a class="link" href="deadline_timer.html" title="deadline_timer"><code class="computeroutput">deadline_timer</code></a>
287 <a name="boost_asio.reference.basic_deadline_timer.h2"></a>
288 <span class="phrase"><a name="boost_asio.reference.basic_deadline_timer.thread_safety"></a></span><a class="link" href="basic_deadline_timer.html#boost_asio.reference.basic_deadline_timer.thread_safety">Thread
292 <span class="emphasis"><em>Distinct</em></span> <span class="emphasis"><em>objects:</em></span> Safe.
295 <span class="emphasis"><em>Shared</em></span> <span class="emphasis"><em>objects:</em></span> Unsafe.
298 <a name="boost_asio.reference.basic_deadline_timer.h3"></a>
299 <span class="phrase"><a name="boost_asio.reference.basic_deadline_timer.examples"></a></span><a class="link" href="basic_deadline_timer.html#boost_asio.reference.basic_deadline_timer.examples">Examples</a>
302 Performing a blocking wait:
304 <pre class="programlisting">// Construct a timer without setting an expiry time.
305 boost::asio::deadline_timer timer(my_context);
307 // Set an expiry time relative to now.
308 timer.expires_from_now(boost::posix_time::seconds(5));
310 // Wait for the timer to expire.
314 Performing an asynchronous wait:
316 <pre class="programlisting">void handler(const boost::system::error_code& error)
326 // Construct a timer with an absolute expiry time.
327 boost::asio::deadline_timer timer(my_context,
328 boost::posix_time::time_from_string("2005-12-07 23:59:59.000"));
330 // Start an asynchronous wait.
331 timer.async_wait(handler);
334 <a name="boost_asio.reference.basic_deadline_timer.h4"></a>
335 <span class="phrase"><a name="boost_asio.reference.basic_deadline_timer.changing_an_active_deadline_timer_s_expiry_time"></a></span><a class="link" href="basic_deadline_timer.html#boost_asio.reference.basic_deadline_timer.changing_an_active_deadline_timer_s_expiry_time">Changing
336 an active deadline_timer's expiry time</a>
339 Changing the expiry time of a timer while there are pending asynchronous
340 waits causes those wait operations to be cancelled. To ensure that the action
341 associated with the timer is performed only once, use something like this:
344 <pre class="programlisting">void on_some_event()
346 if (my_timer.expires_from_now(seconds(5)) > 0)
348 // We managed to cancel the timer. Start new asynchronous wait.
349 my_timer.async_wait(on_timeout);
353 // Too late, timer has already expired!
357 void on_timeout(const boost::system::error_code& e)
359 if (e != boost::asio::error::operation_aborted)
361 // Timer was not cancelled, take necessary action.
365 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
366 <li class="listitem">
367 The <code class="computeroutput">boost::asio::basic_deadline_timer::expires_from_now()</code>
368 function cancels any pending asynchronous waits, and returns the number
369 of asynchronous waits that were cancelled. If it returns 0 then you were
370 too late and the wait handler has already been executed, or will soon
371 be executed. If it returns 1 then the wait handler was successfully cancelled.
373 <li class="listitem">
374 If a wait handler is cancelled, the boost::system::error_code passed
375 to it contains the value <code class="computeroutput">boost::asio::error::operation_aborted</code>.
379 <a name="boost_asio.reference.basic_deadline_timer.h5"></a>
380 <span class="phrase"><a name="boost_asio.reference.basic_deadline_timer.requirements"></a></span><a class="link" href="basic_deadline_timer.html#boost_asio.reference.basic_deadline_timer.requirements">Requirements</a>
383 <span class="emphasis"><em>Header: </em></span><code class="literal">boost/asio/basic_deadline_timer.hpp</code>
386 <span class="emphasis"><em>Convenience header: </em></span><code class="literal">boost/asio.hpp</code>
389 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
390 <td align="left"></td>
391 <td align="right"><div class="copyright-footer">Copyright © 2003-2019 Christopher M. Kohlhoff<p>
392 Distributed under the Boost Software License, Version 1.0. (See accompanying
393 file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
398 <div class="spirit-nav">
399 <a accesskey="p" href="basic_datagram_socket__rebind_executor/other.html"><img src="../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../boost_asio.html"><img src="../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="basic_deadline_timer/async_wait.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a>