mgmt: adapt to API changes in ndn-cxx ControlCommand and Dispatcher
Change-Id: Iabedb5d6bbe34883c21015c8d74f68e9ba2a7f58
diff --git a/src/route/fib.cpp b/src/route/fib.cpp
index d47d880..7f3f076 100644
--- a/src/route/fib.cpp
+++ b/src/route/fib.cpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
- * Copyright (c) 2014-2023, The University of Memphis,
+ * Copyright (c) 2014-2025, The University of Memphis,
* Regents of the University of California
*
* This file is part of NLSR (Named-data Link State Routing).
@@ -24,6 +24,8 @@
#include "logger.hpp"
#include "nexthop-list.hpp"
+#include <ndn-cxx/mgmt/nfd/control-command.hpp>
+
#include <algorithm>
#include <cmath>
#include <map>
@@ -198,8 +200,7 @@
NLSR_LOG_DEBUG("Registering prefix: " << faceParameters.getName() << " faceUri: " << faceUri);
m_controller.start<ndn::nfd::RibRegisterCommand>(faceParameters,
std::bind(&Fib::onRegistrationSuccess, this, _1, faceUri),
- std::bind(&Fib::onRegistrationFailure, this, _1,
- faceParameters, faceUri, times));
+ std::bind(&Fib::onRegistrationFailure, this, _1, faceParameters, faceUri, times));
}
else {
NLSR_LOG_WARN("Error: No Face Id for face uri: " << faceUri);
@@ -264,8 +265,8 @@
" Face Id: " << commandSuccessResult.getFaceId());
},
[] (const ndn::nfd::ControlResponse& response) {
- NLSR_LOG_DEBUG("Failed in unregistering name" << ": " << response.getText() <<
- " (code: " << response.getCode() << ")");
+ NLSR_LOG_DEBUG("Failed in unregistering name: " << response.getText() <<
+ " (code " << response.getCode() << ")");
});
}
}
@@ -279,9 +280,8 @@
.setStrategy(strategy);
m_controller.start<ndn::nfd::StrategyChoiceSetCommand>(parameters,
- std::bind(&Fib::onSetStrategySuccess, this, _1),
- std::bind(&Fib::onSetStrategyFailure, this, _1,
- parameters, count));
+ std::bind(&Fib::onSetStrategySuccess, this, _1),
+ std::bind(&Fib::onSetStrategyFailure, this, _1, parameters, count));
}
void
@@ -292,7 +292,7 @@
}
void
-Fib::onSetStrategyFailure(const ndn::nfd::ControlResponse& response,
+Fib::onSetStrategyFailure(const ndn::nfd::ControlResponse&,
const ndn::nfd::ControlParameters& parameters,
uint32_t count)
{
diff --git a/src/update/manager-base.cpp b/src/update/manager-base.cpp
index 3e0b612..88c61da 100644
--- a/src/update/manager-base.cpp
+++ b/src/update/manager-base.cpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/*
- * Copyright (c) 2014-2023, The University of Memphis,
+ * Copyright (c) 2014-2025, The University of Memphis,
* Regents of the University of California,
* Arizona Board of Regents.
*
@@ -53,11 +53,10 @@
void
CommandManagerBase::advertiseAndInsertPrefix(const ndn::Name& prefix,
const ndn::Interest& interest,
- const ndn::mgmt::ControlParameters& parameters,
+ const ndn::mgmt::ControlParametersBase& parameters,
const ndn::mgmt::CommandContinuation& done)
{
- const ndn::nfd::ControlParameters& castParams =
- static_cast<const ndn::nfd::ControlParameters&>(parameters);
+ const auto& castParams = static_cast<const ndn::nfd::ControlParameters&>(parameters);
// Only build a Name LSA if the added name is new
if (m_namePrefixList.insert(castParams.getName())) {
@@ -95,11 +94,10 @@
void
CommandManagerBase::withdrawAndRemovePrefix(const ndn::Name& prefix,
const ndn::Interest& interest,
- const ndn::mgmt::ControlParameters& parameters,
+ const ndn::mgmt::ControlParametersBase& parameters,
const ndn::mgmt::CommandContinuation& done)
{
- const ndn::nfd::ControlParameters& castParams =
- static_cast<const ndn::nfd::ControlParameters&>(parameters);
+ const auto& castParams = static_cast<const ndn::nfd::ControlParameters&>(parameters);
// Only build a Name LSA if the added name is new
if (m_namePrefixList.erase(castParams.getName())) {
diff --git a/src/update/manager-base.hpp b/src/update/manager-base.hpp
index db6ef62..12b6f3c 100644
--- a/src/update/manager-base.hpp
+++ b/src/update/manager-base.hpp
@@ -65,18 +65,14 @@
PUBLIC_WITH_TESTS_ELSE_PROTECTED:
/*! \brief Validate the parameters for a given command.
*/
- template<typename T>
+ template<typename Command>
static bool
- validateParameters(const ndn::mgmt::ControlParameters& parameters)
+ validateParameters(const ndn::mgmt::ControlParametersBase& parameters)
{
- const auto* castParams = dynamic_cast<const ndn::nfd::ControlParameters*>(¶meters);
- BOOST_ASSERT(castParams != nullptr);
-
- T command;
try {
- command.validateRequest(*castParams);
+ Command::validateRequest(dynamic_cast<const ndn::nfd::ControlParameters&>(parameters));
}
- catch (const ndn::nfd::ControlCommand::ArgumentError&) {
+ catch (const ndn::nfd::ArgumentError&) {
throw;
}
catch (const std::exception& e) {
@@ -110,7 +106,7 @@
void
advertiseAndInsertPrefix(const ndn::Name& prefix,
const ndn::Interest& interest,
- const ndn::mgmt::ControlParameters& parameters,
+ const ndn::mgmt::ControlParametersBase& parameters,
const ndn::mgmt::CommandContinuation& done);
/*! \brief remove desired name prefix from the advertised name prefix list
@@ -119,7 +115,7 @@
void
withdrawAndRemovePrefix(const ndn::Name& prefix,
const ndn::Interest& interest,
- const ndn::mgmt::ControlParameters& parameters,
+ const ndn::mgmt::ControlParametersBase& parameters,
const ndn::mgmt::CommandContinuation& done);
/*! \brief save an advertised prefix to the nlsr configuration file
diff --git a/src/update/prefix-update-commands.cpp b/src/update/prefix-update-commands.cpp
index e783086..da43fe7 100644
--- a/src/update/prefix-update-commands.cpp
+++ b/src/update/prefix-update-commands.cpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2019, The University of Memphis,
+/*
+ * Copyright (c) 2014-2025, The University of Memphis,
* Regents of the University of California,
* Arizona Board of Regents.
*
@@ -17,33 +17,28 @@
*
* You should have received a copy of the GNU General Public License along with
* NLSR, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- **/
+ */
#include "prefix-update-commands.hpp"
-namespace nlsr {
-namespace update {
+namespace nlsr::update {
-WithdrawPrefixCommand::WithdrawPrefixCommand()
- : ControlCommand("nlsr", "withdraw")
-{
- m_requestValidator.required(ndn::nfd::CONTROL_PARAMETER_NAME);
- m_responseValidator.required(ndn::nfd::CONTROL_PARAMETER_NAME);
+const AdvertisePrefixCommand::RequestFormat AdvertisePrefixCommand::s_requestFormat =
+ RequestFormat()
+ .required(ndn::nfd::CONTROL_PARAMETER_NAME)
+ .optional(ndn::nfd::CONTROL_PARAMETER_FLAGS);
+const AdvertisePrefixCommand::ResponseFormat AdvertisePrefixCommand::s_responseFormat =
+ ResponseFormat()
+ .required(ndn::nfd::CONTROL_PARAMETER_NAME)
+ .optional(ndn::nfd::CONTROL_PARAMETER_FLAGS);
- m_requestValidator.optional(ndn::nfd::CONTROL_PARAMETER_FLAGS);
- m_responseValidator.optional(ndn::nfd::CONTROL_PARAMETER_FLAGS);
-}
+const WithdrawPrefixCommand::RequestFormat WithdrawPrefixCommand::s_requestFormat =
+ RequestFormat()
+ .required(ndn::nfd::CONTROL_PARAMETER_NAME)
+ .optional(ndn::nfd::CONTROL_PARAMETER_FLAGS);
+const WithdrawPrefixCommand::ResponseFormat WithdrawPrefixCommand::s_responseFormat =
+ ResponseFormat()
+ .required(ndn::nfd::CONTROL_PARAMETER_NAME)
+ .optional(ndn::nfd::CONTROL_PARAMETER_FLAGS);
-AdvertisePrefixCommand::AdvertisePrefixCommand()
- : ControlCommand("nlsr", "advertise")
-{
- m_requestValidator.required(ndn::nfd::CONTROL_PARAMETER_NAME);
- m_responseValidator.required(ndn::nfd::CONTROL_PARAMETER_NAME);
-
- m_requestValidator.optional(ndn::nfd::CONTROL_PARAMETER_FLAGS);
- m_responseValidator.optional(ndn::nfd::CONTROL_PARAMETER_FLAGS);
-
-}
-
-} // namespace update
-} // namespace nlsr
+} // namespace nlsr::update
diff --git a/src/update/prefix-update-commands.hpp b/src/update/prefix-update-commands.hpp
index ce851a9..0f2f889 100644
--- a/src/update/prefix-update-commands.hpp
+++ b/src/update/prefix-update-commands.hpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2017, The University of Memphis,
+/*
+ * Copyright (c) 2014-2025, The University of Memphis,
* Regents of the University of California,
* Arizona Board of Regents.
*
@@ -17,10 +17,10 @@
*
* You should have received a copy of the GNU General Public License along with
* NLSR, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- **/
+ */
/*! \file
- * Define parameters for commands to manipulate advertised name prefixes
+ * Define parameters for commands to manipulate advertised name prefixes.
*
* These classes serve to define what parameters are required for
* Prefix Update commands. We assume these commands are secure because
@@ -36,22 +36,18 @@
#include <ndn-cxx/mgmt/nfd/control-command.hpp>
-namespace nlsr {
-namespace update {
+namespace nlsr::update {
-class WithdrawPrefixCommand : public ndn::nfd::ControlCommand
+class AdvertisePrefixCommand : public ndn::nfd::ControlCommand<AdvertisePrefixCommand>
{
-public:
- WithdrawPrefixCommand();
+ NDN_CXX_CONTROL_COMMAND(AdvertisePrefixCommand, "nlsr", "advertise");
};
-class AdvertisePrefixCommand : public ndn::nfd::ControlCommand
+class WithdrawPrefixCommand : public ndn::nfd::ControlCommand<WithdrawPrefixCommand>
{
-public:
- AdvertisePrefixCommand();
+ NDN_CXX_CONTROL_COMMAND(WithdrawPrefixCommand, "nlsr", "withdraw");
};
-} // namespace update
-} // namespace nlsr
+} // namespace nlsr::update
#endif // NLSR_UPDATE_PREFIX_UPDATE_COMMANDS_HPP
diff --git a/src/update/prefix-update-processor.cpp b/src/update/prefix-update-processor.cpp
index 6edfae7..1a1b5da 100644
--- a/src/update/prefix-update-processor.cpp
+++ b/src/update/prefix-update-processor.cpp
@@ -79,7 +79,7 @@
PrefixUpdateProcessor::makeAuthorization()
{
return [=] (const ndn::Name& prefix, const ndn::Interest& interest,
- const ndn::mgmt::ControlParameters* params,
+ const ndn::mgmt::ControlParametersBase* params,
const ndn::mgmt::AcceptContinuation& accept,
const ndn::mgmt::RejectContinuation& reject) {
m_validator.validate(interest,