blob: 39b5bceb138e731c30d5295de7fb0884b80dc615 [file] [log] [blame]
Junxiao Shi3b081542017-07-04 18:37:34 +00001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
2/**
3 * Copyright (c) 2014-2017, Regents of the University of California,
4 * Arizona Board of Regents,
5 * Colorado State University,
6 * University Pierre & Marie Curie, Sorbonne University,
7 * Washington University in St. Louis,
8 * Beijing Institute of Technology,
9 * The University of Memphis.
10 *
11 * This file is part of NFD (Named Data Networking Forwarding Daemon).
12 * See AUTHORS.md for complete list of NFD authors and contributors.
13 *
14 * NFD is free software: you can redistribute it and/or modify it under the terms
15 * of the GNU General Public License as published by the Free Software Foundation,
16 * either version 3 of the License, or (at your option) any later version.
17 *
18 * NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
19 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
20 * PURPOSE. See the GNU General Public License for more details.
21 *
22 * You should have received a copy of the GNU General Public License along with
23 * NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
24 */
25
26#ifndef NFD_TOOLS_NDN_AUTOCONFIG_SERVER_PROGRAM_HPP
27#define NFD_TOOLS_NDN_AUTOCONFIG_SERVER_PROGRAM_HPP
28
29#include "core/common.hpp"
30#include <ndn-cxx/face.hpp>
31#include <ndn-cxx/mgmt/dispatcher.hpp>
32#include <ndn-cxx/security/key-chain.hpp>
33
34namespace ndn {
35namespace tools {
36namespace autoconfig_server {
37
38struct Options
39{
40 FaceUri hubFaceUri;
41 std::vector<Name> routablePrefixes;
42};
43
44class Program : noncopyable
45{
46public:
47 Program(const Options& options, Face& face, KeyChain& keyChain);
48
49 void
50 run()
51 {
52 m_face.processEvents();
53 }
54
55private:
56 void
57 enableHubData(const FaceUri& hubFaceUri);
58
59 void
60 enableRoutablePrefixesDataset(const std::vector<Name>& routablePrefixes);
61
62 void
63 handlePrefixRegistrationFailure(const Name& prefix, const std::string& reason);
64
65private:
66 Face& m_face;
67 KeyChain& m_keyChain;
68 mgmt::Dispatcher m_dispatcher;
69};
70
71} // namespace autoconfig_server
72} // namespace tools
73} // namespace ndn
74
75#endif // NFD_TOOLS_NDN_AUTOCONFIG_SERVER_PROGRAM_HPP