All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
command-processor.hpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2014-2025, The University of Memphis,
4  * Regents of the University of California,
5  * Arizona Board of Regents.
6  *
7  * This file is part of NLSR (Named-data Link State Routing).
8  * See AUTHORS.md for complete list of NLSR authors and contributors.
9  *
10  * NLSR is free software: you can redistribute it and/or modify it under the terms
11  * of the GNU General Public License as published by the Free Software Foundation,
12  * either version 3 of the License, or (at your option) any later version.
13  *
14  * NLSR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
15  * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
16  * PURPOSE. See the GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License along with
19  * NLSR, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
20  */
21 
22 #ifndef NLSR_UPDATE_COMMAND_PROCESSOR_HPP
23 #define NLSR_UPDATE_COMMAND_PROCESSOR_HPP
24 
25 #include "lsdb.hpp"
26 #include "name-prefix-list.hpp"
27 
28 #include <ndn-cxx/mgmt/dispatcher.hpp>
29 #include <ndn-cxx/mgmt/nfd/control-parameters.hpp>
30 
31 #include <boost/noncopyable.hpp>
32 #include <optional>
33 
34 namespace nlsr::update {
35 
36 enum { PREFIX_FLAG = 1 };
37 
38 class CommandProcessor : boost::noncopyable
39 {
40 public:
41  class Error : public std::runtime_error
42  {
43  public:
44  using std::runtime_error::runtime_error;
45  };
46 
47  CommandProcessor(ndn::mgmt::Dispatcher& m_dispatcher,
49  Lsdb& lsdb);
50 
51  virtual
53 
57  void
58  advertiseAndInsertPrefix(const ndn::mgmt::ControlParametersBase& parameters,
59  const ndn::mgmt::CommandContinuation& done);
60 
64  void
65  withdrawAndRemovePrefix(const ndn::mgmt::ControlParametersBase& parameters,
66  const ndn::mgmt::CommandContinuation& done);
67 
71  virtual std::optional<bool>
72  afterAdvertise(const ndn::Name& prefix)
73  {
74  return std::nullopt;
75  }
76 
80  virtual std::optional<bool>
81  afterWithdraw(const ndn::Name& prefix)
82  {
83  return std::nullopt;
84  }
85 
86 protected:
87  ndn::mgmt::Dispatcher& m_dispatcher;
90 };
91 
92 } // namespace nlsr::update
93 
94 #endif // NLSR_UPDATE_COMMAND_PROCESSOR_HPP
ndn::mgmt::Dispatcher & m_dispatcher
virtual std::optional< bool > afterWithdraw(const ndn::Name &prefix)
Save an advertised prefix to the nlsr configuration file.
void advertiseAndInsertPrefix(const ndn::mgmt::ControlParametersBase &parameters, const ndn::mgmt::CommandContinuation &done)
Add desired name prefix to the advertised name prefix list or insert a prefix into the FIB if paramet...
virtual std::optional< bool > afterAdvertise(const ndn::Name &prefix)
Save an advertised prefix to the nlsr configuration file.
void withdrawAndRemovePrefix(const ndn::mgmt::ControlParametersBase &parameters, const ndn::mgmt::CommandContinuation &done)
Remove desired name prefix from the advertised name prefix list or remove a prefix from the FIB if pa...
CommandProcessor(ndn::mgmt::Dispatcher &m_dispatcher, NamePrefixList &m_namePrefixList, Lsdb &lsdb)