1//
2// detail/timer_queue_set.hpp
3// ~~~~~~~~~~~~~~~~~~~~~~~~~~
4//
5// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
6//
7// Distributed under the Boost Software License, Version 1.0. (See accompanying
8// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9//
10
11#ifndef ASIO_DETAIL_TIMER_QUEUE_SET_HPP
12#define ASIO_DETAIL_TIMER_QUEUE_SET_HPP
13
14
15#include "asio/detail/config.hpp"
16#include "asio/detail/timer_queue_base.hpp"
17
18#include "asio/detail/push_options.hpp"
19
20namespace asio {
21namespace detail {
22
23class timer_queue_set
24{
25public:
26  // Constructor.
27  ASIO_DECL timer_queue_set();
28
29  // Add a timer queue to the set.
30  ASIO_DECL void insert(timer_queue_base* q);
31
32  // Remove a timer queue from the set.
33  ASIO_DECL void erase(timer_queue_base* q);
34
35  // Determine whether all queues are empty.
36  ASIO_DECL bool all_empty() const;
37
38  // Get the wait duration in milliseconds.
39  ASIO_DECL long wait_duration_msec(long max_duration) const;
40
41  // Get the wait duration in microseconds.
42  ASIO_DECL long wait_duration_usec(long max_duration) const;
43
44  // Dequeue all ready timers.
45  ASIO_DECL void get_ready_timers(op_queue<operation>& ops);
46
47  // Dequeue all timers.
48  ASIO_DECL void get_all_timers(op_queue<operation>& ops);
49
50private:
51  timer_queue_base* first_;
52};
53
54} // namespace detail
55} // namespace asio
56
57#include "asio/detail/pop_options.hpp"
58
59# include "asio/detail/impl/timer_queue_set.ipp"
60
61#endif // ASIO_DETAIL_TIMER_QUEUE_SET_HPP
62