fw: pull FaceTable construction out of Forwarder class
Refs: #4922, #4973
Change-Id: Ibbd4a8840cb0d01ebbd4cabf9c34fa78a1d23db1
diff --git a/daemon/fw/face-table.hpp b/daemon/fw/face-table.hpp
index f501813..d1c51c7 100644
--- a/daemon/fw/face-table.hpp
+++ b/daemon/fw/face-table.hpp
@@ -1,6 +1,6 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014-2017, Regents of the University of California,
+/*
+ * Copyright (c) 2014-2019, Regents of the University of California,
* Arizona Board of Regents,
* Colorado State University,
* University Pierre & Marie Curie, Sorbonne University,
@@ -27,6 +27,7 @@
#define NFD_DAEMON_FW_FACE_TABLE_HPP
#include "face/face.hpp"
+
#include <boost/range/adaptor/indirected.hpp>
#include <boost/range/adaptor/map.hpp>
@@ -79,15 +80,15 @@
end() const;
public: // signals
- /** \brief fires after a face is added
+ /** \brief Fires immediately after a face is added.
*/
- signal::Signal<FaceTable, Face&> afterAdd;
+ signal::Signal<FaceTable, Face> afterAdd;
- /** \brief fires before a face is removed
+ /** \brief Fires immediately before a face is removed.
*
- * When this signal is emitted, face is still in FaceTable and has valid FaceId.
+ * When this signal is emitted, the face is still in FaceTable and has a valid FaceId.
*/
- signal::Signal<FaceTable, Face&> beforeRemove;
+ signal::Signal<FaceTable, Face> beforeRemove;
private:
void
diff --git a/daemon/fw/forwarder.cpp b/daemon/fw/forwarder.cpp
index 4c91fb7..f59963e 100644
--- a/daemon/fw/forwarder.cpp
+++ b/daemon/fw/forwarder.cpp
@@ -44,14 +44,15 @@
return fw::BestRouteStrategy2::getStrategyName();
}
-Forwarder::Forwarder()
- : m_unsolicitedDataPolicy(make_unique<fw::DefaultUnsolicitedDataPolicy>())
+Forwarder::Forwarder(FaceTable& faceTable)
+ : m_faceTable(faceTable)
+ , m_unsolicitedDataPolicy(make_unique<fw::DefaultUnsolicitedDataPolicy>())
, m_fib(m_nameTree)
, m_pit(m_nameTree)
, m_measurements(m_nameTree)
, m_strategyChoice(*this)
{
- m_faceTable.afterAdd.connect([this] (Face& face) {
+ m_faceTable.afterAdd.connect([this] (const Face& face) {
face.afterReceiveInterest.connect(
[this, &face] (const Interest& interest, const EndpointId& endpointId) {
this->startProcessInterest(FaceEndpoint(face, endpointId), interest);
@@ -70,7 +71,7 @@
});
});
- m_faceTable.beforeRemove.connect([this] (Face& face) {
+ m_faceTable.beforeRemove.connect([this] (const Face& face) {
cleanupOnFaceRemoval(m_nameTree, m_fib, m_pit, face);
});
diff --git a/daemon/fw/forwarder.hpp b/daemon/fw/forwarder.hpp
index cc1d048..3b14a61 100644
--- a/daemon/fw/forwarder.hpp
+++ b/daemon/fw/forwarder.hpp
@@ -44,14 +44,15 @@
class Strategy;
} // namespace fw
-/** \brief Main class of NFD forwarding engine.
+/** \brief Main class of NFD's forwarding engine.
*
- * Forwarder owns all faces and tables, and implements the forwarding pipelines.
+ * Forwarder owns all tables and implements the forwarding pipelines.
*/
class Forwarder
{
public:
- Forwarder();
+ explicit
+ Forwarder(FaceTable& faceTable);
VIRTUAL_WITH_TESTS
~Forwarder();
@@ -62,33 +63,6 @@
return m_counters;
}
-public: // faces and policies
- FaceTable&
- getFaceTable()
- {
- return m_faceTable;
- }
-
- /** \brief get existing Face
- *
- * shortcut to .getFaceTable().get(face)
- */
- Face*
- getFace(FaceId id) const
- {
- return m_faceTable.get(id);
- }
-
- /** \brief add new Face
- *
- * shortcut to .getFaceTable().add(face)
- */
- void
- addFace(shared_ptr<Face> face)
- {
- m_faceTable.add(face);
- }
-
fw::UnsolicitedDataPolicy&
getUnsolicitedDataPolicy() const
{
@@ -274,7 +248,7 @@
private:
ForwarderCounters m_counters;
- FaceTable m_faceTable;
+ FaceTable& m_faceTable;
unique_ptr<fw::UnsolicitedDataPolicy> m_unsolicitedDataPolicy;
NameTree m_nameTree;
diff --git a/daemon/fw/strategy.cpp b/daemon/fw/strategy.cpp
index b0b9362..f9f4106 100644
--- a/daemon/fw/strategy.cpp
+++ b/daemon/fw/strategy.cpp
@@ -141,8 +141,8 @@
}
Strategy::Strategy(Forwarder& forwarder)
- : afterAddFace(forwarder.getFaceTable().afterAdd)
- , beforeRemoveFace(forwarder.getFaceTable().beforeRemove)
+ : afterAddFace(forwarder.m_faceTable.afterAdd)
+ , beforeRemoveFace(forwarder.m_faceTable.beforeRemove)
, m_forwarder(forwarder)
, m_measurements(m_forwarder.getMeasurements(), m_forwarder.getStrategyChoice(), *this)
{
diff --git a/daemon/fw/strategy.hpp b/daemon/fw/strategy.hpp
index 8c62329..99e4826 100644
--- a/daemon/fw/strategy.hpp
+++ b/daemon/fw/strategy.hpp
@@ -322,13 +322,13 @@
Face*
getFace(FaceId id) const
{
- return m_forwarder.getFace(id);
+ return getFaceTable().get(id);
}
const FaceTable&
getFaceTable() const
{
- return m_forwarder.getFaceTable();
+ return m_forwarder.m_faceTable;
}
protected: // instance name
@@ -379,8 +379,8 @@
find(const Name& instanceName);
protected: // accessors
- signal::Signal<FaceTable, Face&>& afterAddFace;
- signal::Signal<FaceTable, Face&>& beforeRemoveFace;
+ signal::Signal<FaceTable, Face>& afterAddFace;
+ signal::Signal<FaceTable, Face>& beforeRemoveFace;
private: // instance fields
Name m_name;