rib: stop using the global scheduler
Change-Id: I0e205e2f1adf85be49b132b47791b27e4530697a
Refs: #4528
diff --git a/rib/readvertise/readvertise.cpp b/rib/readvertise/readvertise.cpp
index 7a467ef..09715eb 100644
--- a/rib/readvertise/readvertise.cpp
+++ b/rib/readvertise/readvertise.cpp
@@ -43,9 +43,11 @@
return std::max(newTime, 0_ms);
}
-Readvertise::Readvertise(Rib& rib, unique_ptr<ReadvertisePolicy> policy,
+Readvertise::Readvertise(Rib& rib, ndn::util::Scheduler& scheduler,
+ unique_ptr<ReadvertisePolicy> policy,
unique_ptr<ReadvertiseDestination> destination)
- : m_policy(std::move(policy))
+ : m_scheduler(scheduler)
+ , m_policy(std::move(policy))
, m_destination(std::move(destination))
{
m_addRouteConn = rib.afterAddRoute.connect([this] (const auto& r) { this->afterAddRoute(r); });
@@ -73,7 +75,7 @@
ReadvertisedRouteContainer::iterator rrIt;
bool isNew = false;
- std::tie(rrIt, isNew) = m_rrs.emplace(action->prefix);
+ std::tie(rrIt, isNew) = m_rrs.emplace(action->prefix, m_scheduler);
if (!isNew && rrIt->signer != action->signer) {
NFD_LOG_WARN("add-route " << ribRoute.entry->getName() << '(' << ribRoute.route->faceId <<
@@ -159,14 +161,14 @@
[=] {
NFD_LOG_DEBUG("advertise " << rrIt->prefix << " success");
rrIt->retryDelay = RETRY_DELAY_MIN;
- rrIt->retryEvt = scheduler::schedule(randomizeTimer(m_policy->getRefreshInterval()),
- [=] { advertise(rrIt); });
+ rrIt->retryEvt = m_scheduler.scheduleEvent(randomizeTimer(m_policy->getRefreshInterval()),
+ [=] { advertise(rrIt); });
},
[=] (const std::string& msg) {
NFD_LOG_DEBUG("advertise " << rrIt->prefix << " failure " << msg);
rrIt->retryDelay = std::min(RETRY_DELAY_MAX, rrIt->retryDelay * 2);
- rrIt->retryEvt = scheduler::schedule(randomizeTimer(rrIt->retryDelay),
- [=] { advertise(rrIt); });
+ rrIt->retryEvt = m_scheduler.scheduleEvent(randomizeTimer(rrIt->retryDelay),
+ [=] { advertise(rrIt); });
});
}
@@ -189,7 +191,8 @@
[=] (const std::string& msg) {
NFD_LOG_DEBUG("withdraw " << rrIt->prefix << " failure " << msg);
rrIt->retryDelay = std::min(RETRY_DELAY_MAX, rrIt->retryDelay * 2);
- rrIt->retryEvt = scheduler::schedule(randomizeTimer(rrIt->retryDelay), [=] { withdraw(rrIt); });
+ rrIt->retryEvt = m_scheduler.scheduleEvent(randomizeTimer(rrIt->retryDelay),
+ [=] { withdraw(rrIt); });
});
}
diff --git a/rib/readvertise/readvertise.hpp b/rib/readvertise/readvertise.hpp
index 13a6e59..c1a3b58 100644
--- a/rib/readvertise/readvertise.hpp
+++ b/rib/readvertise/readvertise.hpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2017, Regents of the University of California,
+/*
+ * Copyright (c) 2014-2018, Regents of the University of California,
* Arizona Board of Regents,
* Colorado State University,
* University Pierre & Marie Curie, Sorbonne University,
@@ -30,7 +30,6 @@
#include "readvertise-policy.hpp"
#include "readvertised-route.hpp"
#include "../rib.hpp"
-#include "core/scheduler.hpp"
namespace nfd {
namespace rib {
@@ -47,6 +46,7 @@
public:
Readvertise(Rib& rib,
+ ndn::util::Scheduler& scheduler,
unique_ptr<ReadvertisePolicy> policy,
unique_ptr<ReadvertiseDestination> destination);
@@ -77,6 +77,7 @@
static const time::milliseconds RETRY_DELAY_MIN;
static const time::milliseconds RETRY_DELAY_MAX;
+ ndn::util::Scheduler& m_scheduler;
unique_ptr<ReadvertisePolicy> m_policy;
unique_ptr<ReadvertiseDestination> m_destination;
diff --git a/rib/readvertise/readvertised-route.cpp b/rib/readvertise/readvertised-route.cpp
deleted file mode 100644
index 7028697..0000000
--- a/rib/readvertise/readvertised-route.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2017, Regents of the University of California,
- * Arizona Board of Regents,
- * Colorado State University,
- * University Pierre & Marie Curie, Sorbonne University,
- * Washington University in St. Louis,
- * Beijing Institute of Technology,
- * The University of Memphis.
- *
- * This file is part of NFD (Named Data Networking Forwarding Daemon).
- * See AUTHORS.md for complete list of NFD authors and contributors.
- *
- * NFD is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "readvertised-route.hpp"
-#include "core/random.hpp"
-
-namespace nfd {
-namespace rib {
-
-ReadvertisedRoute::ReadvertisedRoute(const Name& prefix)
- : prefix(prefix)
- , nRibRoutes(0)
-{
-}
-
-} // namespace rib
-} // namespace nfd
diff --git a/rib/readvertise/readvertised-route.hpp b/rib/readvertise/readvertised-route.hpp
index 0692ccd..c2ca848 100644
--- a/rib/readvertise/readvertised-route.hpp
+++ b/rib/readvertise/readvertised-route.hpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2017, Regents of the University of California,
+/*
+ * Copyright (c) 2014-2018, Regents of the University of California,
* Arizona Board of Regents,
* Colorado State University,
* University Pierre & Marie Curie, Sorbonne University,
@@ -26,8 +26,10 @@
#ifndef NFD_RIB_READVERTISE_READVERTISED_ROUTE_HPP
#define NFD_RIB_READVERTISE_READVERTISED_ROUTE_HPP
-#include "core/scheduler.hpp"
+#include "core/common.hpp"
+
#include <ndn-cxx/security/signing-info.hpp>
+#include <ndn-cxx/util/scheduler-scoped-event-id.hpp>
namespace nfd {
namespace rib {
@@ -37,15 +39,20 @@
class ReadvertisedRoute : noncopyable
{
public:
- explicit
- ReadvertisedRoute(const Name& prefix);
+ ReadvertisedRoute(const Name& prefix, ndn::util::Scheduler& scheduler)
+ : prefix(prefix)
+ , nRibRoutes(0)
+ , retryDelay(0)
+ , retryEvt(scheduler)
+ {
+ }
public:
Name prefix; ///< readvertised prefix
mutable ndn::security::SigningInfo signer; ///< signer for commands
mutable size_t nRibRoutes; ///< number of RIB routes that cause the readvertisement
mutable time::milliseconds retryDelay; ///< retry interval (not used for refresh)
- mutable scheduler::ScopedEventId retryEvt; ///< retry or refresh event
+ mutable ndn::util::scheduler::ScopedEventId retryEvt; ///< retry or refresh event
};
inline bool