Home | History | Annotate | Download | only in detail
      1 //
      2 // detail/timer_queue_base.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_BASE_HPP
     12 #define ASIO_DETAIL_TIMER_QUEUE_BASE_HPP
     13 
     14 
     15 #include "asio/detail/config.hpp"
     16 #include "asio/detail/noncopyable.hpp"
     17 #include "asio/detail/op_queue.hpp"
     18 #include "asio/detail/operation.hpp"
     19 
     20 #include "asio/detail/push_options.hpp"
     21 
     22 namespace asio {
     23 namespace detail {
     24 
     25 class timer_queue_base
     26   : private noncopyable
     27 {
     28 public:
     29   // Constructor.
     30   timer_queue_base() : next_(0) {}
     31 
     32   // Destructor.
     33   virtual ~timer_queue_base() {}
     34 
     35   // Whether there are no timers in the queue.
     36   virtual bool empty() const = 0;
     37 
     38   // Get the time to wait until the next timer.
     39   virtual long wait_duration_msec(long max_duration) const = 0;
     40 
     41   // Get the time to wait until the next timer.
     42   virtual long wait_duration_usec(long max_duration) const = 0;
     43 
     44   // Dequeue all ready timers.
     45   virtual void get_ready_timers(op_queue<operation>& ops) = 0;
     46 
     47   // Dequeue all timers.
     48   virtual void get_all_timers(op_queue<operation>& ops) = 0;
     49 
     50 private:
     51   friend class timer_queue_set;
     52 
     53   // Next timer queue in the set.
     54   timer_queue_base* next_;
     55 };
     56 
     57 template <typename Time_Traits>
     58 class timer_queue;
     59 
     60 } // namespace detail
     61 } // namespace asio
     62 
     63 #include "asio/detail/pop_options.hpp"
     64 
     65 #endif // ASIO_DETAIL_TIMER_QUEUE_BASE_HPP
     66