face-system.hpp
Go to the documentation of this file.
1 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
26 #ifndef NFD_DAEMON_FACE_FACE_SYSTEM_HPP
27 #define NFD_DAEMON_FACE_FACE_SYSTEM_HPP
28 
29 #include "channel.hpp"
30 #include "core/config-file.hpp"
33 
34 namespace nfd {
35 
36 class FaceTable;
37 
38 namespace face {
39 
40 class ProtocolFactory;
41 
47 class FaceSystem : noncopyable
48 {
49 public:
50  explicit
51  FaceSystem(FaceTable& faceTable);
52 
53  ~FaceSystem();
54 
57  std::set<const ProtocolFactory*>
58  listProtocolFactories() const;
59 
63  getFactoryById(const std::string& id);
64 
68  getFactoryByScheme(const std::string& scheme);
69 
72  void
73  setConfigFile(ConfigFile& configFile);
74 
77  class ConfigContext : noncopyable
78  {
79  public:
80  const std::vector<NetworkInterfaceInfo>&
81  listNetifs() const
82  {
84  return m_netifs;
85  }
86 
87  public:
88  bool isDryRun;
91 
92  private:
93  std::vector<NetworkInterfaceInfo> m_netifs;
94 
95  friend class FaceSystem;
96  };
97 
98 private:
99  void
100  processConfig(const ConfigSection& configSection, bool isDryRun,
101  const std::string& filename);
102 
106  std::map<std::string, unique_ptr<ProtocolFactory>> m_factories;
107 
108 private:
113  std::map<std::string, ProtocolFactory*> m_factoryByScheme;
114 
115  FaceTable& m_faceTable;
116 };
117 
118 } // namespace face
119 
120 using face::FaceSystem;
121 
122 } // namespace nfd
123 
124 #endif // NFD_DAEMON_FACE_FACE_SYSTEM_HPP
configuration file parsing utility
Definition: config-file.hpp:58
const std::vector< NetworkInterfaceInfo > & listNetifs() const
Definition: face-system.hpp:81
ProtocolFactory * getFactoryByScheme(const std::string &scheme)
Definition: face-system.cpp:65
container of all faces
Definition: face-table.hpp:37
void setConfigFile(ConfigFile &configFile)
register handler for face_system section of NFD configuration file
Definition: face-system.cpp:72
context for processing a config section in ProtocolFactory
Definition: face-system.hpp:77
Copyright (c) 2014-2015, Regents of the University of California, Arizona Board of Regents...
boost::property_tree::ptree ConfigSection
a config file section
Definition: config-file.hpp:37
provide support for an underlying protocol
#define PUBLIC_WITH_TESTS_ELSE_PRIVATE
Definition: common.hpp:40
function< void(const shared_ptr< Face > &newFace)> FaceCreatedCallback
Prototype for the callback that is invoked when the face is created (as a response to incoming connec...
Definition: channel.hpp:38
entry point of the face system
Definition: face-system.hpp:47
FaceSystem(FaceTable &faceTable)
Definition: face-system.cpp:36
ProtocolFactory * getFactoryById(const std::string &id)
Definition: face-system.cpp:58
std::set< const ProtocolFactory * > listProtocolFactories() const
Definition: face-system.cpp:48