1//
2// wait_traits.hpp
3// ~~~~~~~~~~~~~~~
4//
5// Copyright (c) 2003-2024 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 BOOST_ASIO_WAIT_TRAITS_HPP
12#define BOOST_ASIO_WAIT_TRAITS_HPP
13
14#if defined(_MSC_VER) && (_MSC_VER >= 1200)
15# pragma once
16#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
17
18#include <boost/asio/detail/push_options.hpp>
19
20namespace boost {
21namespace asio {
22
23/// Wait traits suitable for use with the basic_waitable_timer class template.
24template <typename Clock>
25struct wait_traits
26{
27 /// Convert a clock duration into a duration used for waiting.
28 /**
29 * @returns @c d.
30 */
31 static typename Clock::duration to_wait_duration(
32 const typename Clock::duration& d)
33 {
34 return d;
35 }
36
37 /// Convert a clock duration into a duration used for waiting.
38 /**
39 * @returns @c d.
40 */
41 static typename Clock::duration to_wait_duration(
42 const typename Clock::time_point& t)
43 {
44 typename Clock::time_point now = Clock::now();
45 if (now + (Clock::duration::max)() < t)
46 return (Clock::duration::max)();
47 if (now + (Clock::duration::min)() > t)
48 return (Clock::duration::min)();
49 return t - now;
50 }
51};
52
53} // namespace asio
54} // namespace boost
55
56#include <boost/asio/detail/pop_options.hpp>
57
58#endif // BOOST_ASIO_WAIT_TRAITS_HPP
59

source code of boost/libs/asio/include/boost/asio/wait_traits.hpp