mgmt: FaceManager no longer owns FaceSystem
refs #3904
Change-Id: I2ef6fd36a51493eea27d8eb0e1c7dc022766f948
diff --git a/daemon/face/face-system.hpp b/daemon/face/face-system.hpp
index bca7702..d1f38b9 100644
--- a/daemon/face/face-system.hpp
+++ b/daemon/face/face-system.hpp
@@ -67,6 +67,12 @@
ProtocolFactory*
getFactoryByScheme(const std::string& scheme);
+ FaceTable&
+ getFaceTable()
+ {
+ return m_faceTable;
+ }
+
/** \brief register handler for face_system section of NFD configuration file
*/
void
diff --git a/daemon/mgmt/face-manager.cpp b/daemon/mgmt/face-manager.cpp
index a2bfc3c..4d1929d 100644
--- a/daemon/mgmt/face-manager.cpp
+++ b/daemon/mgmt/face-manager.cpp
@@ -35,10 +35,11 @@
NFD_LOG_INIT("FaceManager");
-FaceManager::FaceManager(FaceTable& faceTable, Dispatcher& dispatcher, CommandAuthenticator& authenticator)
+FaceManager::FaceManager(FaceSystem& faceSystem,
+ Dispatcher& dispatcher, CommandAuthenticator& authenticator)
: NfdManagerBase(dispatcher, authenticator, "faces")
- , m_faceSystem(faceTable)
- , m_faceTable(faceTable)
+ , m_faceSystem(faceSystem)
+ , m_faceTable(faceSystem.getFaceTable())
{
registerCommandHandler<ndn::nfd::FaceCreateCommand>("create",
bind(&FaceManager::createFace, this, _2, _3, _4, _5));
diff --git a/daemon/mgmt/face-manager.hpp b/daemon/mgmt/face-manager.hpp
index 3c92e93..9a8c503 100644
--- a/daemon/mgmt/face-manager.hpp
+++ b/daemon/mgmt/face-manager.hpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
- * Copyright (c) 2014-2016, Regents of the University of California,
+ * Copyright (c) 2014-2017, Regents of the University of California,
* Arizona Board of Regents,
* Colorado State University,
* University Pierre & Marie Curie, Sorbonne University,
@@ -41,9 +41,8 @@
class FaceManager : public NfdManagerBase
{
public:
- FaceManager(FaceTable& faceTable,
- Dispatcher& dispatcher,
- CommandAuthenticator& authenticator);
+ FaceManager(FaceSystem& faceSystem,
+ Dispatcher& dispatcher, CommandAuthenticator& authenticator);
/**
* @brief Subscribe to face_system section for the config file
@@ -141,7 +140,7 @@
connectFaceStateChangeSignal(const Face& face);
PUBLIC_WITH_TESTS_ELSE_PRIVATE:
- FaceSystem m_faceSystem; ///\todo #3904 accept FaceSystem& in constructor; don't own FaceSystem
+ FaceSystem& m_faceSystem;
FaceTable& m_faceTable;
std::map<FaceId, signal::ScopedConnection> m_faceStateChangeConn;
diff --git a/daemon/nfd.cpp b/daemon/nfd.cpp
index b3369db..2f2861d 100644
--- a/daemon/nfd.cpp
+++ b/daemon/nfd.cpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
- * Copyright (c) 2014-2016, Regents of the University of California,
+ * Copyright (c) 2014-2017, Regents of the University of California,
* Arizona Board of Regents,
* Colorado State University,
* University Pierre & Marie Curie, Sorbonne University,
@@ -30,6 +30,7 @@
#include "core/privilege-helper.hpp"
#include "core/config-file.hpp"
#include "fw/forwarder.hpp"
+#include "face/face-system.hpp"
#include "face/null-face.hpp"
#include "face/internal-face.hpp"
#include "mgmt/fib-manager.hpp"
@@ -83,11 +84,12 @@
m_forwarder.reset(new Forwarder());
- initializeManagement();
-
FaceTable& faceTable = m_forwarder->getFaceTable();
faceTable.addReserved(face::makeNullFace(), face::FACEID_NULL);
faceTable.addReserved(face::makeNullFace(FaceUri("contentstore://")), face::FACEID_CONTENT_STORE);
+ m_faceSystem.reset(new face::FaceSystem(faceTable));
+
+ initializeManagement();
PrivilegeHelper::drop();
@@ -145,8 +147,7 @@
m_authenticator = CommandAuthenticator::create();
m_forwarderStatusManager.reset(new ForwarderStatusManager(*m_forwarder, *m_dispatcher));
- m_faceManager.reset(new FaceManager(m_forwarder->getFaceTable(),
- *m_dispatcher, *m_authenticator));
+ m_faceManager.reset(new FaceManager(*m_faceSystem, *m_dispatcher, *m_authenticator));
m_fibManager.reset(new FibManager(m_forwarder->getFib(), m_forwarder->getFaceTable(),
*m_dispatcher, *m_authenticator));
m_strategyChoiceManager.reset(new StrategyChoiceManager(m_forwarder->getStrategyChoice(),
diff --git a/daemon/nfd.hpp b/daemon/nfd.hpp
index f98d3b6..8082bf3 100644
--- a/daemon/nfd.hpp
+++ b/daemon/nfd.hpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
- * Copyright (c) 2014-2016, Regents of the University of California,
+ * Copyright (c) 2014-2017, Regents of the University of California,
* Arizona Board of Regents,
* Colorado State University,
* University Pierre & Marie Curie, Sorbonne University,
@@ -50,6 +50,7 @@
namespace face {
class Face;
+class FaceSystem;
} // namespace face
/**
@@ -106,6 +107,7 @@
ConfigSection m_configSection;
unique_ptr<Forwarder> m_forwarder;
+ unique_ptr<face::FaceSystem> m_faceSystem;
ndn::KeyChain& m_keyChain;
shared_ptr<face::Face> m_internalFace;