Reduce usage of std::bind()
C++14 lambdas are easier to read, easier to debug,
and can usually be better optimized by the compiler.
Change-Id: I294f275904f91942a8de946fe63e77078a7608a6
diff --git a/daemon/mgmt/command-authenticator.cpp b/daemon/mgmt/command-authenticator.cpp
index 2196889..7c3cb23 100644
--- a/daemon/mgmt/command-authenticator.cpp
+++ b/daemon/mgmt/command-authenticator.cpp
@@ -107,8 +107,9 @@
void
CommandAuthenticator::setConfigFile(ConfigFile& configFile)
{
- configFile.addSectionHandler("authorizations",
- bind(&CommandAuthenticator::processConfig, this, _1, _2, _3));
+ configFile.addSectionHandler("authorizations", [this] (auto&&... args) {
+ processConfig(std::forward<decltype(args)>(args)...);
+ });
}
void
diff --git a/daemon/mgmt/cs-manager.cpp b/daemon/mgmt/cs-manager.cpp
index 50c3001..eaf2cda 100644
--- a/daemon/mgmt/cs-manager.cpp
+++ b/daemon/mgmt/cs-manager.cpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
- * Copyright (c) 2014-2019, Regents of the University of California,
+ * Copyright (c) 2014-2021, Regents of the University of California,
* Arizona Board of Regents,
* Colorado State University,
* University Pierre & Marie Curie, Sorbonne University,
@@ -40,11 +40,11 @@
, m_fwCounters(fwCounters)
{
registerCommandHandler<ndn::nfd::CsConfigCommand>("config",
- bind(&CsManager::changeConfig, this, _4, _5));
+ std::bind(&CsManager::changeConfig, this, _4, _5));
registerCommandHandler<ndn::nfd::CsEraseCommand>("erase",
- bind(&CsManager::erase, this, _4, _5));
+ std::bind(&CsManager::erase, this, _4, _5));
- registerStatusDatasetHandler("info", bind(&CsManager::serveInfo, this, _1, _2, _3));
+ registerStatusDatasetHandler("info", std::bind(&CsManager::serveInfo, this, _1, _2, _3));
}
void
diff --git a/daemon/mgmt/face-manager.cpp b/daemon/mgmt/face-manager.cpp
index a6ff3df..1d38f43 100644
--- a/daemon/mgmt/face-manager.cpp
+++ b/daemon/mgmt/face-manager.cpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
- * Copyright (c) 2014-2020, Regents of the University of California,
+ * Copyright (c) 2014-2021, Regents of the University of California,
* Arizona Board of Regents,
* Colorado State University,
* University Pierre & Marie Curie, Sorbonne University,
@@ -47,14 +47,17 @@
, m_faceTable(faceSystem.getFaceTable())
{
// register handlers for ControlCommand
- registerCommandHandler<ndn::nfd::FaceCreateCommand>("create", bind(&FaceManager::createFace, this, _4, _5));
- registerCommandHandler<ndn::nfd::FaceUpdateCommand>("update", bind(&FaceManager::updateFace, this, _3, _4, _5));
- registerCommandHandler<ndn::nfd::FaceDestroyCommand>("destroy", bind(&FaceManager::destroyFace, this, _4, _5));
+ registerCommandHandler<ndn::nfd::FaceCreateCommand>("create",
+ std::bind(&FaceManager::createFace, this, _4, _5));
+ registerCommandHandler<ndn::nfd::FaceUpdateCommand>("update",
+ std::bind(&FaceManager::updateFace, this, _3, _4, _5));
+ registerCommandHandler<ndn::nfd::FaceDestroyCommand>("destroy",
+ std::bind(&FaceManager::destroyFace, this, _4, _5));
// register handlers for StatusDataset
- registerStatusDatasetHandler("list", bind(&FaceManager::listFaces, this, _3));
- registerStatusDatasetHandler("channels", bind(&FaceManager::listChannels, this, _3));
- registerStatusDatasetHandler("query", bind(&FaceManager::queryFaces, this, _2, _3));
+ registerStatusDatasetHandler("list", std::bind(&FaceManager::listFaces, this, _3));
+ registerStatusDatasetHandler("channels", std::bind(&FaceManager::listChannels, this, _3));
+ registerStatusDatasetHandler("query", std::bind(&FaceManager::queryFaces, this, _2, _3));
// register notification stream
m_postNotification = registerNotificationStream("events");
@@ -359,13 +362,13 @@
}
static ndn::nfd::FaceStatus
-makeFaceStatus(const Face& face, const time::steady_clock::TimePoint& now)
+makeFaceStatus(const Face& face, const time::steady_clock::time_point& now)
{
ndn::nfd::FaceStatus status;
copyFaceProperties(face, status);
auto expirationTime = face.getExpirationTime();
- if (expirationTime != time::steady_clock::TimePoint::max()) {
+ if (expirationTime != time::steady_clock::time_point::max()) {
status.setExpirationPeriod(std::max(0_ms,
time::duration_cast<time::milliseconds>(expirationTime - now)));
}
diff --git a/daemon/mgmt/fib-manager.cpp b/daemon/mgmt/fib-manager.cpp
index c048da5..f8a99d8 100644
--- a/daemon/mgmt/fib-manager.cpp
+++ b/daemon/mgmt/fib-manager.cpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
- * Copyright (c) 2014-2019, Regents of the University of California,
+ * Copyright (c) 2014-2021, Regents of the University of California,
* Arizona Board of Regents,
* Colorado State University,
* University Pierre & Marie Curie, Sorbonne University,
@@ -45,11 +45,11 @@
, m_faceTable(faceTable)
{
registerCommandHandler<ndn::nfd::FibAddNextHopCommand>("add-nexthop",
- bind(&FibManager::addNextHop, this, _2, _3, _4, _5));
+ std::bind(&FibManager::addNextHop, this, _2, _3, _4, _5));
registerCommandHandler<ndn::nfd::FibRemoveNextHopCommand>("remove-nexthop",
- bind(&FibManager::removeNextHop, this, _2, _3, _4, _5));
+ std::bind(&FibManager::removeNextHop, this, _2, _3, _4, _5));
- registerStatusDatasetHandler("list", bind(&FibManager::listEntries, this, _1, _2, _3));
+ registerStatusDatasetHandler("list", std::bind(&FibManager::listEntries, this, _1, _2, _3));
}
void
diff --git a/daemon/mgmt/forwarder-status-manager.cpp b/daemon/mgmt/forwarder-status-manager.cpp
index 5d4cb4d..818d054 100644
--- a/daemon/mgmt/forwarder-status-manager.cpp
+++ b/daemon/mgmt/forwarder-status-manager.cpp
@@ -35,7 +35,7 @@
, m_startTimestamp(time::system_clock::now())
{
m_dispatcher.addStatusDataset("status/general", ndn::mgmt::makeAcceptAllAuthorization(),
- bind(&ForwarderStatusManager::listGeneralStatus, this, _1, _2, _3));
+ std::bind(&ForwarderStatusManager::listGeneralStatus, this, _1, _2, _3));
}
ndn::nfd::ForwarderStatus
diff --git a/daemon/mgmt/manager-base.cpp b/daemon/mgmt/manager-base.cpp
index 49f5b8b..a39bbd6 100644
--- a/daemon/mgmt/manager-base.cpp
+++ b/daemon/mgmt/manager-base.cpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
- * Copyright (c) 2014-2019, Regents of the University of California,
+ * Copyright (c) 2014-2021, Regents of the University of California,
* Arizona Board of Regents,
* Colorado State University,
* University Pierre & Marie Curie, Sorbonne University,
@@ -59,7 +59,8 @@
}
void
-ManagerBase::extractRequester(const Interest& interest, ndn::mgmt::AcceptContinuation accept)
+ManagerBase::extractRequester(const Interest& interest,
+ const ndn::mgmt::AcceptContinuation& accept)
{
const Name& interestName = interest.getName();
@@ -103,7 +104,7 @@
const ControlCommandHandler& handler,
const Name& prefix, const Interest& interest,
const ndn::mgmt::ControlParameters& params,
- ndn::mgmt::CommandContinuation done)
+ const ndn::mgmt::CommandContinuation& done)
{
BOOST_ASSERT(dynamic_cast<const ControlParameters*>(¶ms) != nullptr);
diff --git a/daemon/mgmt/manager-base.hpp b/daemon/mgmt/manager-base.hpp
index e061217..eeb55f5 100644
--- a/daemon/mgmt/manager-base.hpp
+++ b/daemon/mgmt/manager-base.hpp
@@ -97,10 +97,10 @@
* This is called after the signature has been validated.
*
* @param interest a request for ControlCommand
- * @param accept callback of successful validation, takes the requester string as a argument
+ * @param accept callback of successful validation, takes the requester string as argument
*/
- void
- extractRequester(const Interest& interest, ndn::mgmt::AcceptContinuation accept);
+ static void
+ extractRequester(const Interest& interest, const ndn::mgmt::AcceptContinuation& accept);
NFD_PUBLIC_WITH_TESTS_ELSE_PRIVATE:
/**
@@ -127,7 +127,7 @@
const ControlCommandHandler& handler,
const Name& prefix, const Interest& interest,
const ndn::mgmt::ControlParameters& params,
- ndn::mgmt::CommandContinuation done);
+ const ndn::mgmt::CommandContinuation& done);
/**
* @brief Generates the relative prefix for a handler by appending the verb name to the module name.
@@ -148,7 +148,7 @@
};
template<typename Command>
-inline void
+void
ManagerBase::registerCommandHandler(const std::string& verb,
const ControlCommandHandler& handler)
{
@@ -157,8 +157,8 @@
m_dispatcher.addControlCommand<ControlParameters>(
makeRelPrefix(verb),
makeAuthorization(verb),
- bind(&ManagerBase::validateParameters, std::cref(*command), _1),
- bind(&ManagerBase::handleCommand, command, handler, _1, _2, _3, _4));
+ [=] (const auto& params) { return validateParameters(*command, params); },
+ [=] (auto&&... args) { handleCommand(command, handler, std::forward<decltype(args)>(args)...); });
}
} // namespace nfd
diff --git a/daemon/mgmt/rib-manager.cpp b/daemon/mgmt/rib-manager.cpp
index 68b061e..4e444bf 100644
--- a/daemon/mgmt/rib-manager.cpp
+++ b/daemon/mgmt/rib-manager.cpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
- * Copyright (c) 2014-2020, Regents of the University of California,
+ * Copyright (c) 2014-2021, Regents of the University of California,
* Arizona Board of Regents,
* Colorado State University,
* University Pierre & Marie Curie, Sorbonne University,
@@ -62,11 +62,11 @@
, m_isLocalhopEnabled(false)
{
registerCommandHandler<ndn::nfd::RibRegisterCommand>("register",
- bind(&RibManager::registerEntry, this, _2, _3, _4, _5));
+ std::bind(&RibManager::registerEntry, this, _2, _3, _4, _5));
registerCommandHandler<ndn::nfd::RibUnregisterCommand>("unregister",
- bind(&RibManager::unregisterEntry, this, _2, _3, _4, _5));
+ std::bind(&RibManager::unregisterEntry, this, _2, _3, _4, _5));
- registerStatusDatasetHandler("list", bind(&RibManager::listEntries, this, _1, _2, _3));
+ registerStatusDatasetHandler("list", std::bind(&RibManager::listEntries, this, _1, _2, _3));
}
void
@@ -104,7 +104,7 @@
}
NFD_LOG_INFO("Start monitoring face create/destroy events");
- m_faceMonitor.onNotification.connect(bind(&RibManager::onNotification, this, _1));
+ m_faceMonitor.onNotification.connect([this] (const auto& notif) { onNotification(notif); });
m_faceMonitor.start();
scheduleActiveFaceFetch(ACTIVE_FACE_FETCH_INTERVAL);
@@ -248,7 +248,7 @@
}
void
-RibManager::unregisterEntry(const Name& topPrefix, const Interest& interest,
+RibManager::unregisterEntry(const Name&, const Interest& interest,
ControlParameters parameters,
const ndn::mgmt::CommandContinuation& done)
{
@@ -265,7 +265,7 @@
}
void
-RibManager::listEntries(const Name& topPrefix, const Interest& interest,
+RibManager::listEntries(const Name&, const Interest& interest,
ndn::mgmt::StatusDatasetContext& context)
{
auto now = time::steady_clock::now();
@@ -304,7 +304,7 @@
}
ndn::mgmt::Authorization
-RibManager::makeAuthorization(const std::string& verb)
+RibManager::makeAuthorization(const std::string&)
{
return [this] (const Name& prefix, const Interest& interest,
const ndn::mgmt::ControlParameters* params,
@@ -316,8 +316,8 @@
auto& validator = prefix == LOCALHOST_TOP_PREFIX ? m_localhostValidator : m_localhopValidator;
validator.validate(interest,
- bind([&interest, this, accept] { extractRequester(interest, accept); }),
- bind([reject] { reject(ndn::mgmt::RejectReply::STATUS403); }));
+ [&interest, accept] (auto&&...) { extractRequester(interest, accept); },
+ [reject] (auto&&...) { reject(ndn::mgmt::RejectReply::STATUS403); });
};
}
@@ -429,8 +429,8 @@
NFD_LOG_DEBUG("Fetching active faces");
m_nfdController.fetch<ndn::nfd::FaceDataset>(
- bind(&RibManager::removeInvalidFaces, this, _1),
- bind(&RibManager::onFetchActiveFacesFailure, this, _1, _2),
+ std::bind(&RibManager::removeInvalidFaces, this, _1),
+ std::bind(&RibManager::onFetchActiveFacesFailure, this, _1, _2),
ndn::nfd::CommandOptions());
}
diff --git a/daemon/mgmt/strategy-choice-manager.cpp b/daemon/mgmt/strategy-choice-manager.cpp
index 169ce2e..9be09d2 100644
--- a/daemon/mgmt/strategy-choice-manager.cpp
+++ b/daemon/mgmt/strategy-choice-manager.cpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
- * Copyright (c) 2014-2019, Regents of the University of California,
+ * Copyright (c) 2014-2021, Regents of the University of California,
* Arizona Board of Regents,
* Colorado State University,
* University Pierre & Marie Curie, Sorbonne University,
@@ -41,12 +41,12 @@
, m_table(strategyChoice)
{
registerCommandHandler<ndn::nfd::StrategyChoiceSetCommand>("set",
- bind(&StrategyChoiceManager::setStrategy, this, _4, _5));
+ std::bind(&StrategyChoiceManager::setStrategy, this, _4, _5));
registerCommandHandler<ndn::nfd::StrategyChoiceUnsetCommand>("unset",
- bind(&StrategyChoiceManager::unsetStrategy, this, _4, _5));
+ std::bind(&StrategyChoiceManager::unsetStrategy, this, _4, _5));
registerStatusDatasetHandler("list",
- bind(&StrategyChoiceManager::listChoices, this, _3));
+ std::bind(&StrategyChoiceManager::listChoices, this, _3));
}
void
diff --git a/daemon/mgmt/tables-config-section.cpp b/daemon/mgmt/tables-config-section.cpp
index e5383a4..f6adced 100644
--- a/daemon/mgmt/tables-config-section.cpp
+++ b/daemon/mgmt/tables-config-section.cpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
- * Copyright (c) 2014-2019, Regents of the University of California,
+ * Copyright (c) 2014-2021, Regents of the University of California,
* Arizona Board of Regents,
* Colorado State University,
* University Pierre & Marie Curie, Sorbonne University,
@@ -28,7 +28,7 @@
namespace nfd {
-const size_t TablesConfigSection::DEFAULT_CS_MAX_PACKETS = 65536;
+const size_t DEFAULT_CS_MAX_PACKETS = 65536;
TablesConfigSection::TablesConfigSection(Forwarder& forwarder)
: m_forwarder(forwarder)
@@ -39,8 +39,9 @@
void
TablesConfigSection::setConfigFile(ConfigFile& configFile)
{
- configFile.addSectionHandler("tables",
- bind(&TablesConfigSection::processConfig, this, _1, _2));
+ configFile.addSectionHandler("tables", [this] (auto&&... args) {
+ processConfig(std::forward<decltype(args)>(args)...);
+ });
}
void
@@ -58,7 +59,7 @@
}
void
-TablesConfigSection::processConfig(const ConfigSection& section, bool isDryRun)
+TablesConfigSection::processConfig(const ConfigSection& section, bool isDryRun, const std::string&)
{
size_t nCsMaxPackets = DEFAULT_CS_MAX_PACKETS;
OptionalConfigSection csMaxPacketsNode = section.get_child_optional("cs_max_packets");
diff --git a/daemon/mgmt/tables-config-section.hpp b/daemon/mgmt/tables-config-section.hpp
index c2cfec5..f551b78 100644
--- a/daemon/mgmt/tables-config-section.hpp
+++ b/daemon/mgmt/tables-config-section.hpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
- * Copyright (c) 2014-2019, Regents of the University of California,
+ * Copyright (c) 2014-2021, Regents of the University of California,
* Arizona Board of Regents,
* Colorado State University,
* University Pierre & Marie Curie, Sorbonne University,
@@ -83,7 +83,7 @@
private:
void
- processConfig(const ConfigSection& section, bool isDryRun);
+ processConfig(const ConfigSection& section, bool isDryRun, const std::string& filename);
void
processStrategyChoiceSection(const ConfigSection& section, bool isDryRun);
@@ -92,10 +92,7 @@
processNetworkRegionSection(const ConfigSection& section, bool isDryRun);
private:
- static const size_t DEFAULT_CS_MAX_PACKETS;
-
Forwarder& m_forwarder;
-
bool m_isConfigured;
};