NS-3 based Named Data Networking (NDN) simulator
ndnSIM 2.3: NDN, CCN, CCNx, content centric networks
API Documentation
monotonic-deadline-timer.hpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2013-2017 Regents of the University of California.
4  *
5  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
6  *
7  * ndn-cxx library is free software: you can redistribute it and/or modify it under the
8  * terms of the GNU Lesser General Public License as published by the Free Software
9  * Foundation, either version 3 of the License, or (at your option) any later version.
10  *
11  * ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
12  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13  * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
14  *
15  * You should have received copies of the GNU General Public License and GNU Lesser
16  * General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see
17  * <http://www.gnu.org/licenses/>.
18  *
19  * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
20  */
21 
26 #ifndef NDN_UTIL_DETAIL_MONOTONIC_DEADLINE_TIMER_HPP
27 #define NDN_UTIL_DETAIL_MONOTONIC_DEADLINE_TIMER_HPP
28 
29 #include "../time.hpp"
30 #include <boost/asio/basic_deadline_timer.hpp>
31 #include <boost/asio/io_service.hpp>
32 
33 namespace boost {
34 namespace asio {
35 
36 template<>
37 struct time_traits<ndn::time::steady_clock>
38 {
41 
42  static time_type
43  now()
44  {
46  }
47 
48  static time_type
49  add(const time_type& time, const duration_type& duration)
50  {
51  return time + duration;
52  }
53 
54  static duration_type
55  subtract(const time_type& timeLhs, const time_type& timeRhs)
56  {
57  return timeLhs - timeRhs;
58  }
59 
60  static bool
61  less_than(const time_type& timeLhs, const time_type& timeRhs)
62  {
63  return timeLhs < timeRhs;
64  }
65 
66  static boost::posix_time::time_duration
68  {
69  return ndn::time::steady_clock::to_posix_duration(duration);
70  }
71 };
72 
73 } // namespace asio
74 } // namespace boost
75 
76 namespace ndn {
77 namespace util {
78 namespace detail {
79 
80 class MonotonicDeadlineTimer : public boost::asio::basic_deadline_timer<time::steady_clock>
81 {
82 public:
83  MonotonicDeadlineTimer(boost::asio::io_service& ioService)
84  : boost::asio::basic_deadline_timer<time::steady_clock>(ioService)
85  {
86  }
87 };
88 
89 } // namespace detail
90 } // namespace util
91 } // namespace ndn
92 
93 #endif // NDN_UTIL_DETAIL_MONOTONIC_DEADLINE_TIMER_HPP
time_point TimePoint
Definition: time.hpp:120
Copyright (c) 2011-2015 Regents of the University of California.
Copyright (c) 2013-2017 Regents of the University of California.
static boost::posix_time::time_duration to_posix_duration(const duration_type &duration)
static time_point now() noexcept
Definition: time.cpp:80
static time_type add(const time_type &time, const duration_type &duration)
Steady clock.
Definition: time.hpp:111
MonotonicDeadlineTimer(boost::asio::io_service &ioService)
static duration_type subtract(const time_type &timeLhs, const time_type &timeRhs)
static bool less_than(const time_type &timeLhs, const time_type &timeRhs)