util: hide MonotonicDeadlineTimer into detail

refs #3940

Change-Id: Ied9ebf58812ade64b13f7647b8e2cafc4c383997
diff --git a/src/util/scheduler.cpp b/src/util/scheduler.cpp
index eda11e4..8e72e78 100644
--- a/src/util/scheduler.cpp
+++ b/src/util/scheduler.cpp
@@ -1,5 +1,5 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
+/*
  * Copyright (c) 2013-2017 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
@@ -20,6 +20,7 @@
  */
 
 #include "scheduler.hpp"
+#include "detail/monotonic-deadline-timer.hpp"
 #include <boost/scope_exit.hpp>
 
 namespace ndn {
@@ -75,13 +76,15 @@
 }
 
 Scheduler::Scheduler(boost::asio::io_service& ioService)
-  : m_deadlineTimer(ioService)
+  : m_deadlineTimer(make_unique<detail::MonotonicDeadlineTimer>(ioService))
   , m_isEventExecuting(false)
 {
 }
 
+Scheduler::~Scheduler() = default;
+
 EventId
-Scheduler::scheduleEvent(const time::nanoseconds& after, const EventCallback& callback)
+Scheduler::scheduleEvent(time::nanoseconds after, const EventCallback& callback)
 {
   BOOST_ASSERT(callback != nullptr);
 
@@ -105,7 +108,7 @@
   }
 
   if (info->queueIt == m_queue.begin()) {
-    m_deadlineTimer.cancel();
+    m_deadlineTimer->cancel();
   }
   m_queue.erase(info->queueIt);
 
@@ -118,15 +121,15 @@
 Scheduler::cancelAllEvents()
 {
   m_queue.clear();
-  m_deadlineTimer.cancel();
+  m_deadlineTimer->cancel();
 }
 
 void
 Scheduler::scheduleNext()
 {
   if (!m_queue.empty()) {
-    m_deadlineTimer.expires_from_now((*m_queue.begin())->expiresFromNow());
-    m_deadlineTimer.async_wait(bind(&Scheduler::executeEvent, this, _1));
+    m_deadlineTimer->expires_from_now((*m_queue.begin())->expiresFromNow());
+    m_deadlineTimer->async_wait(bind(&Scheduler::executeEvent, this, _1));
   }
 }