sync-logic-handler.hpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2 /*
3  * Copyright (c) 2014-2022, 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_SYNC_LOGIC_HANDLER_HPP
23 #define NLSR_SYNC_LOGIC_HANDLER_HPP
24 
25 #include "conf-parameter.hpp"
26 #include "lsa/lsa.hpp"
27 #include "signals.hpp"
29 #include "test-access-control.hpp"
30 
31 namespace nlsr {
32 
41 {
42 public:
43  class Error : public std::runtime_error
44  {
45  public:
46  using std::runtime_error::runtime_error;
47  };
48 
49  using IsLsaNew =
50  std::function<bool(const ndn::Name&, const Lsa::Type& lsaType, const uint64_t&, uint64_t/*inFace*/)>;
51 
52  SyncLogicHandler(ndn::Face& face, ndn::KeyChain& keyChain,
53  IsLsaNew isLsaNew, const ConfParameter& conf);
54 
64  void
65  publishRoutingUpdate(const Lsa::Type& type, const uint64_t& seqNo);
66 
74  void
75  processUpdate(const ndn::Name& updateName, uint64_t highSeq, uint64_t incomingFaceId);
76 
85  void
86  processUpdateFromSync(const ndn::Name& originRouter,
87  const ndn::Name& updateName, uint64_t seqNo, uint64_t incomingFaceId);
88 
89 public:
91 
92 private:
93  IsLsaNew m_isLsaNew;
94  const ConfParameter& m_confParam;
95 
97  ndn::Name m_nameLsaUserPrefix;
98  ndn::Name m_adjLsaUserPrefix;
99  ndn::Name m_coorLsaUserPrefix;
100 
101  SyncProtocolAdapter m_syncLogic;
102 };
103 
104 } // namespace nlsr
105 
106 #endif // NLSR_SYNC_LOGIC_HANDLER_HPP
A class to house all the configuration parameters for NLSR.
NLSR-to-ChronoSync interaction point.
void publishRoutingUpdate(const Lsa::Type &type, const uint64_t &seqNo)
Instruct ChronoSync to publish an update.
SyncLogicHandler(ndn::Face &face, ndn::KeyChain &keyChain, IsLsaNew isLsaNew, const ConfParameter &conf)
std::function< bool(const ndn::Name &, const Lsa::Type &lsaType, const uint64_t &, uint64_t)> IsLsaNew
Copyright (c) 2014-2020, The University of Memphis, Regents of the University of California.
ndn::util::Signal< SyncLogicHandler, ndn::Name, uint64_t, ndn::Name, uint64_t > OnNewLsa
Definition: signals.hpp:36
#define PUBLIC_WITH_TESTS_ELSE_PRIVATE