mgmt+core: Moving SegmentPublisher to core/ and removing KeyChain from nfd::AppFace
This change ensures interface uniformity between nfd::AppFace and
ndn::Face and allow now templated version of SegmentPublisher to be used
with either.
Change-Id: I82e29528b13b37bd2ae27ef47db30e8c87c15a38
Refs: #1749
diff --git a/daemon/main.cpp b/daemon/main.cpp
index 2509307..e275668 100644
--- a/daemon/main.cpp
+++ b/daemon/main.cpp
@@ -129,13 +129,21 @@
m_fibManager = make_shared<FibManager>(ref(m_forwarder->getFib()),
bind(&Forwarder::getFace, m_forwarder.get(), _1),
- m_internalFace);
- m_faceManager = make_shared<FaceManager>(ref(m_forwarder->getFaceTable()),
- m_internalFace);
- m_strategyChoiceManager = make_shared<StrategyChoiceManager>(
- ref(m_forwarder->getStrategyChoice()), m_internalFace);
+ m_internalFace,
+ ndn::ref(m_keyChain));
- m_statusServer = make_shared<StatusServer>(m_internalFace, ref(*m_forwarder));
+ m_faceManager = make_shared<FaceManager>(ref(m_forwarder->getFaceTable()),
+ m_internalFace,
+ ndn::ref(m_keyChain));
+
+ m_strategyChoiceManager =
+ make_shared<StrategyChoiceManager>(ref(m_forwarder->getStrategyChoice()),
+ m_internalFace,
+ ndn::ref(m_keyChain));
+
+ m_statusServer = make_shared<StatusServer>(m_internalFace,
+ ref(*m_forwarder),
+ ndn::ref(m_keyChain));
ConfigFile config((IgnoreRibAndLogSections()));
general::setConfigFile(config);
@@ -314,6 +322,7 @@
shared_ptr<std::ofstream> m_logFile;
std::basic_streambuf<char>* m_originalStreamBuf;
+ ndn::KeyChain m_keyChain;
};
} // namespace nfd
diff --git a/daemon/mgmt/app-face.cpp b/daemon/mgmt/app-face.cpp
deleted file mode 100644
index 2c9c9b5..0000000
--- a/daemon/mgmt/app-face.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014 Regents of the University of California,
- * Arizona Board of Regents,
- * Colorado State University,
- * University Pierre & Marie Curie, Sorbonne University,
- * Washington University in St. Louis,
- * Beijing Institute of Technology
- *
- * This file is part of NFD (Named Data Networking Forwarding Daemon).
- * See AUTHORS.md for complete list of NFD authors and contributors.
- *
- * NFD is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "app-face.hpp"
-
-namespace nfd {
-
-void
-AppFace::sign(Data& data)
-{
- m_keyChain.sign(data);
-}
-
-} // namespace nfd
diff --git a/daemon/mgmt/app-face.hpp b/daemon/mgmt/app-face.hpp
index 476fda7..13442a8 100644
--- a/daemon/mgmt/app-face.hpp
+++ b/daemon/mgmt/app-face.hpp
@@ -1,11 +1,12 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
- * Copyright (c) 2014 Regents of the University of California,
- * Arizona Board of Regents,
- * Colorado State University,
- * University Pierre & Marie Curie, Sorbonne University,
- * Washington University in St. Louis,
- * Beijing Institute of Technology
+ * Copyright (c) 2014, Regents of the University of California,
+ * Arizona Board of Regents,
+ * Colorado State University,
+ * University Pierre & Marie Curie, Sorbonne University,
+ * Washington University in St. Louis,
+ * Beijing Institute of Technology,
+ * The University of Memphis
*
* This file is part of NFD (Named Data Networking Forwarding Daemon).
* See AUTHORS.md for complete list of NFD authors and contributors.
@@ -20,7 +21,7 @@
*
* You should have received a copy of the GNU General Public License along with
* NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- **/
+ */
#ifndef NFD_DAEMON_MGMT_APP_FACE_HPP
#define NFD_DAEMON_MGMT_APP_FACE_HPP
@@ -41,16 +42,10 @@
OnInterest onInterest) = 0;
virtual void
- sign(Data& data);
-
- virtual void
put(const Data& data) = 0;
virtual
~AppFace() { }
-
-protected:
- ndn::KeyChain m_keyChain;
};
} // namespace nfd
diff --git a/daemon/mgmt/channel-status-publisher.cpp b/daemon/mgmt/channel-status-publisher.cpp
index c212f72..8abe2fb 100644
--- a/daemon/mgmt/channel-status-publisher.cpp
+++ b/daemon/mgmt/channel-status-publisher.cpp
@@ -37,9 +37,10 @@
ChannelStatusPublisher::ChannelStatusPublisher(const FactoryMap& factories,
- shared_ptr<AppFace> face,
- const Name& prefix)
- : SegmentPublisher(face, prefix)
+ AppFace& face,
+ const Name& prefix,
+ ndn::KeyChain& keyChain)
+ : SegmentPublisher(face, prefix, keyChain)
, m_factories(factories)
{
diff --git a/daemon/mgmt/channel-status-publisher.hpp b/daemon/mgmt/channel-status-publisher.hpp
index b204258..ef660a3 100644
--- a/daemon/mgmt/channel-status-publisher.hpp
+++ b/daemon/mgmt/channel-status-publisher.hpp
@@ -26,20 +26,22 @@
#ifndef NFD_DAEMON_MGMT_CHANNEL_STATUS_PUBLISHER_HPP
#define NFD_DAEMON_MGMT_CHANNEL_STATUS_PUBLISHER_HPP
-#include "mgmt/segment-publisher.hpp"
+#include "core/segment-publisher.hpp"
+#include "mgmt/app-face.hpp"
namespace nfd {
class ProtocolFactory;
-class ChannelStatusPublisher : public SegmentPublisher
+class ChannelStatusPublisher : public SegmentPublisher<AppFace>
{
public:
typedef std::map< std::string/*protocol*/, shared_ptr<ProtocolFactory> > FactoryMap;
ChannelStatusPublisher(const FactoryMap& factories,
- shared_ptr<AppFace> face,
- const Name& prefix);
+ AppFace& face,
+ const Name& prefix,
+ ndn::KeyChain& keyChain);
virtual
~ChannelStatusPublisher();
diff --git a/daemon/mgmt/face-manager.cpp b/daemon/mgmt/face-manager.cpp
index b6cca36..c8bc267 100644
--- a/daemon/mgmt/face-manager.cpp
+++ b/daemon/mgmt/face-manager.cpp
@@ -113,12 +113,13 @@
const size_t FaceManager::CHANNELS_LIST_DATASET_NCOMPS = CHANNELS_LIST_DATASET_PREFIX.size();
FaceManager::FaceManager(FaceTable& faceTable,
- shared_ptr<InternalFace> face)
- : ManagerBase(face, FACE_MANAGER_PRIVILEGE)
+ shared_ptr<InternalFace> face,
+ ndn::KeyChain& keyChain)
+ : ManagerBase(face, FACE_MANAGER_PRIVILEGE, keyChain)
, m_faceTable(faceTable)
- , m_faceStatusPublisher(m_faceTable, m_face, FACES_LIST_DATASET_PREFIX)
- , m_channelStatusPublisher(m_factories, m_face, CHANNELS_LIST_DATASET_PREFIX)
- , m_notificationStream(m_face, FACE_EVENTS_PREFIX)
+ , m_faceStatusPublisher(m_faceTable, *m_face, FACES_LIST_DATASET_PREFIX, keyChain)
+ , m_channelStatusPublisher(m_factories, *m_face, CHANNELS_LIST_DATASET_PREFIX, keyChain)
+ , m_notificationStream(m_face, FACE_EVENTS_PREFIX, keyChain)
, m_signedVerbDispatch(SIGNED_COMMAND_VERBS,
SIGNED_COMMAND_VERBS +
(sizeof(SIGNED_COMMAND_VERBS) / sizeof(SignedVerbAndProcessor)))
diff --git a/daemon/mgmt/face-manager.hpp b/daemon/mgmt/face-manager.hpp
index 0a5579e..ec5decf 100644
--- a/daemon/mgmt/face-manager.hpp
+++ b/daemon/mgmt/face-manager.hpp
@@ -61,7 +61,8 @@
*/
FaceManager(FaceTable& faceTable,
- shared_ptr<InternalFace> face);
+ shared_ptr<InternalFace> face,
+ ndn::KeyChain& keyChain);
virtual
~FaceManager();
diff --git a/daemon/mgmt/face-status-publisher.cpp b/daemon/mgmt/face-status-publisher.cpp
index 62531d2..04542c8 100644
--- a/daemon/mgmt/face-status-publisher.cpp
+++ b/daemon/mgmt/face-status-publisher.cpp
@@ -34,9 +34,10 @@
FaceStatusPublisher::FaceStatusPublisher(const FaceTable& faceTable,
- shared_ptr<AppFace> face,
- const Name& prefix)
- : SegmentPublisher(face, prefix)
+ AppFace& face,
+ const Name& prefix,
+ ndn::KeyChain& keyChain)
+ : SegmentPublisher(face, prefix, keyChain)
, m_faceTable(faceTable)
{
diff --git a/daemon/mgmt/face-status-publisher.hpp b/daemon/mgmt/face-status-publisher.hpp
index 935426d..5091165 100644
--- a/daemon/mgmt/face-status-publisher.hpp
+++ b/daemon/mgmt/face-status-publisher.hpp
@@ -1,11 +1,12 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
- * Copyright (c) 2014 Regents of the University of California,
- * Arizona Board of Regents,
- * Colorado State University,
- * University Pierre & Marie Curie, Sorbonne University,
- * Washington University in St. Louis,
- * Beijing Institute of Technology
+ * Copyright (c) 2014, Regents of the University of California,
+ * Arizona Board of Regents,
+ * Colorado State University,
+ * University Pierre & Marie Curie, Sorbonne University,
+ * Washington University in St. Louis,
+ * Beijing Institute of Technology,
+ * The University of Memphis
*
* This file is part of NFD (Named Data Networking Forwarding Daemon).
* See AUTHORS.md for complete list of NFD authors and contributors.
@@ -20,23 +21,25 @@
*
* You should have received a copy of the GNU General Public License along with
* NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- **/
+ */
#ifndef NFD_DAEMON_MGMT_FACE_STATUS_PUBLISHER_HPP
#define NFD_DAEMON_MGMT_FACE_STATUS_PUBLISHER_HPP
-#include "mgmt/segment-publisher.hpp"
+#include "core/segment-publisher.hpp"
+#include "mgmt/app-face.hpp"
namespace nfd {
class FaceTable;
-class FaceStatusPublisher : public SegmentPublisher
+class FaceStatusPublisher : public SegmentPublisher<AppFace>
{
public:
FaceStatusPublisher(const FaceTable& faceTable,
- shared_ptr<AppFace> face,
- const Name& prefix);
+ AppFace& face,
+ const Name& prefix,
+ ndn::KeyChain& keyChain);
virtual
~FaceStatusPublisher();
diff --git a/daemon/mgmt/fib-enumeration-publisher.cpp b/daemon/mgmt/fib-enumeration-publisher.cpp
index 4278c98..b7bad51 100644
--- a/daemon/mgmt/fib-enumeration-publisher.cpp
+++ b/daemon/mgmt/fib-enumeration-publisher.cpp
@@ -33,9 +33,10 @@
NFD_LOG_INIT("FibEnumerationPublisher");
FibEnumerationPublisher::FibEnumerationPublisher(const Fib& fib,
- shared_ptr<AppFace> face,
- const Name& prefix)
- : SegmentPublisher(face, prefix)
+ AppFace& face,
+ const Name& prefix,
+ ndn::KeyChain& keyChain)
+ : SegmentPublisher(face, prefix, keyChain)
, m_fib(fib)
{
}
diff --git a/daemon/mgmt/fib-enumeration-publisher.hpp b/daemon/mgmt/fib-enumeration-publisher.hpp
index 2aa7539..2ff5c31 100644
--- a/daemon/mgmt/fib-enumeration-publisher.hpp
+++ b/daemon/mgmt/fib-enumeration-publisher.hpp
@@ -1,11 +1,12 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
- * Copyright (c) 2014 Regents of the University of California,
- * Arizona Board of Regents,
- * Colorado State University,
- * University Pierre & Marie Curie, Sorbonne University,
- * Washington University in St. Louis,
- * Beijing Institute of Technology
+ * Copyright (c) 2014, Regents of the University of California,
+ * Arizona Board of Regents,
+ * Colorado State University,
+ * University Pierre & Marie Curie, Sorbonne University,
+ * Washington University in St. Louis,
+ * Beijing Institute of Technology,
+ * The University of Memphis
*
* This file is part of NFD (Named Data Networking Forwarding Daemon).
* See AUTHORS.md for complete list of NFD authors and contributors.
@@ -20,23 +21,25 @@
*
* You should have received a copy of the GNU General Public License along with
* NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- **/
+ */
#ifndef NFD_DAEMON_MGMT_FIB_ENUMERATION_PUBLISHER_HPP
#define NFD_DAEMON_MGMT_FIB_ENUMERATION_PUBLISHER_HPP
-#include "mgmt/segment-publisher.hpp"
+#include "core/segment-publisher.hpp"
+#include "mgmt/app-face.hpp"
namespace nfd {
class Fib;
-class FibEnumerationPublisher : public SegmentPublisher
+class FibEnumerationPublisher : public SegmentPublisher<AppFace>
{
public:
FibEnumerationPublisher(const Fib& fib,
- shared_ptr<AppFace> face,
- const Name& prefix);
+ AppFace& face,
+ const Name& prefix,
+ ndn::KeyChain& keyChain);
virtual
~FibEnumerationPublisher();
diff --git a/daemon/mgmt/fib-manager.cpp b/daemon/mgmt/fib-manager.cpp
index 98c4578..bda1681 100644
--- a/daemon/mgmt/fib-manager.cpp
+++ b/daemon/mgmt/fib-manager.cpp
@@ -1,11 +1,12 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
- * Copyright (c) 2014 Regents of the University of California,
- * Arizona Board of Regents,
- * Colorado State University,
- * University Pierre & Marie Curie, Sorbonne University,
- * Washington University in St. Louis,
- * Beijing Institute of Technology
+ * Copyright (c) 2014, Regents of the University of California,
+ * Arizona Board of Regents,
+ * Colorado State University,
+ * University Pierre & Marie Curie, Sorbonne University,
+ * Washington University in St. Louis,
+ * Beijing Institute of Technology,
+ * The University of Memphis
*
* This file is part of NFD (Named Data Networking Forwarding Daemon).
* See AUTHORS.md for complete list of NFD authors and contributors.
@@ -20,7 +21,7 @@
*
* You should have received a copy of the GNU General Public License along with
* NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- **/
+ */
#include "fib-manager.hpp"
@@ -76,11 +77,12 @@
FibManager::FibManager(Fib& fib,
function<shared_ptr<Face>(FaceId)> getFace,
- shared_ptr<InternalFace> face)
- : ManagerBase(face, FIB_PRIVILEGE)
+ shared_ptr<InternalFace> face,
+ ndn::KeyChain& keyChain)
+ : ManagerBase(face, FIB_PRIVILEGE, keyChain)
, m_managedFib(fib)
, m_getFace(getFace)
- , m_fibEnumerationPublisher(fib, face, LIST_COMMAND_PREFIX)
+ , m_fibEnumerationPublisher(fib, *face, LIST_COMMAND_PREFIX, keyChain)
, m_signedVerbDispatch(SIGNED_COMMAND_VERBS,
SIGNED_COMMAND_VERBS +
(sizeof(SIGNED_COMMAND_VERBS) / sizeof(SignedVerbAndProcessor)))
diff --git a/daemon/mgmt/fib-manager.hpp b/daemon/mgmt/fib-manager.hpp
index 4591088..c8c21ea 100644
--- a/daemon/mgmt/fib-manager.hpp
+++ b/daemon/mgmt/fib-manager.hpp
@@ -1,11 +1,12 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
- * Copyright (c) 2014 Regents of the University of California,
- * Arizona Board of Regents,
- * Colorado State University,
- * University Pierre & Marie Curie, Sorbonne University,
- * Washington University in St. Louis,
- * Beijing Institute of Technology
+ * Copyright (c) 2014, Regents of the University of California,
+ * Arizona Board of Regents,
+ * Colorado State University,
+ * University Pierre & Marie Curie, Sorbonne University,
+ * Washington University in St. Louis,
+ * Beijing Institute of Technology,
+ * The University of Memphis
*
* This file is part of NFD (Named Data Networking Forwarding Daemon).
* See AUTHORS.md for complete list of NFD authors and contributors.
@@ -20,7 +21,7 @@
*
* You should have received a copy of the GNU General Public License along with
* NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- **/
+ */
#ifndef NFD_DAEMON_MGMT_FIB_MANAGER_HPP
#define NFD_DAEMON_MGMT_FIB_MANAGER_HPP
@@ -43,7 +44,8 @@
FibManager(Fib& fib,
function<shared_ptr<Face>(FaceId)> getFace,
- shared_ptr<InternalFace> face);
+ shared_ptr<InternalFace> face,
+ ndn::KeyChain& keyChain);
virtual
~FibManager();
diff --git a/daemon/mgmt/manager-base.cpp b/daemon/mgmt/manager-base.cpp
index 60f3bc9..ca1e00d 100644
--- a/daemon/mgmt/manager-base.cpp
+++ b/daemon/mgmt/manager-base.cpp
@@ -1,11 +1,12 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
- * Copyright (c) 2014 Regents of the University of California,
- * Arizona Board of Regents,
- * Colorado State University,
- * University Pierre & Marie Curie, Sorbonne University,
- * Washington University in St. Louis,
- * Beijing Institute of Technology
+ * Copyright (c) 2014, Regents of the University of California,
+ * Arizona Board of Regents,
+ * Colorado State University,
+ * University Pierre & Marie Curie, Sorbonne University,
+ * Washington University in St. Louis,
+ * Beijing Institute of Technology,
+ * The University of Memphis
*
* This file is part of NFD (Named Data Networking Forwarding Daemon).
* See AUTHORS.md for complete list of NFD authors and contributors.
@@ -20,7 +21,7 @@
*
* You should have received a copy of the GNU General Public License along with
* NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- **/
+ */
#include "manager-base.hpp"
#include "core/logger.hpp"
@@ -29,8 +30,10 @@
NFD_LOG_INIT("ManagerBase");
-ManagerBase::ManagerBase(shared_ptr<InternalFace> face, const std::string& privilege)
+ManagerBase::ManagerBase(shared_ptr<InternalFace> face, const std::string& privilege,
+ ndn::KeyChain& keyChain)
: m_face(face)
+ , m_keyChain(keyChain)
{
face->getValidator().addSupportedPrivilege(privilege);
}
@@ -92,7 +95,7 @@
shared_ptr<Data> responseData(make_shared<Data>(name));
responseData->setContent(encodedControl);
- m_face->sign(*responseData);
+ m_keyChain.sign(*responseData);
m_face->put(*responseData);
}
diff --git a/daemon/mgmt/manager-base.hpp b/daemon/mgmt/manager-base.hpp
index 2eac9e3..15c19ee 100644
--- a/daemon/mgmt/manager-base.hpp
+++ b/daemon/mgmt/manager-base.hpp
@@ -1,11 +1,12 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
- * Copyright (c) 2014 Regents of the University of California,
- * Arizona Board of Regents,
- * Colorado State University,
- * University Pierre & Marie Curie, Sorbonne University,
- * Washington University in St. Louis,
- * Beijing Institute of Technology
+ * Copyright (c) 2014, Regents of the University of California,
+ * Arizona Board of Regents,
+ * Colorado State University,
+ * University Pierre & Marie Curie, Sorbonne University,
+ * Washington University in St. Louis,
+ * Beijing Institute of Technology,
+ * The University of Memphis
*
* This file is part of NFD (Named Data Networking Forwarding Daemon).
* See AUTHORS.md for complete list of NFD authors and contributors.
@@ -20,7 +21,7 @@
*
* You should have received a copy of the GNU General Public License along with
* NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- **/
+ */
#ifndef NFD_DAEMON_MGMT_MANAGER_BASE_HPP
#define NFD_DAEMON_MGMT_MANAGER_BASE_HPP
@@ -51,7 +52,9 @@
Error(const std::string& what) : std::runtime_error(what) {}
};
- ManagerBase(shared_ptr<InternalFace> face, const std::string& privilege);
+ ManagerBase(shared_ptr<InternalFace> face,
+ const std::string& privilege,
+ ndn::KeyChain& keyChain);
virtual
~ManagerBase();
@@ -112,6 +115,7 @@
protected:
shared_ptr<InternalFace> m_face;
+ ndn::KeyChain& m_keyChain;
};
inline void
diff --git a/daemon/mgmt/notification-stream.hpp b/daemon/mgmt/notification-stream.hpp
index 8d727d7..06c3b5a 100644
--- a/daemon/mgmt/notification-stream.hpp
+++ b/daemon/mgmt/notification-stream.hpp
@@ -1,11 +1,12 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
- * Copyright (c) 2014 Regents of the University of California,
- * Arizona Board of Regents,
- * Colorado State University,
- * University Pierre & Marie Curie, Sorbonne University,
- * Washington University in St. Louis,
- * Beijing Institute of Technology
+ * Copyright (c) 2014, Regents of the University of California,
+ * Arizona Board of Regents,
+ * Colorado State University,
+ * University Pierre & Marie Curie, Sorbonne University,
+ * Washington University in St. Louis,
+ * Beijing Institute of Technology,
+ * The University of Memphis
*
* This file is part of NFD (Named Data Networking Forwarding Daemon).
* See AUTHORS.md for complete list of NFD authors and contributors.
@@ -20,7 +21,8 @@
*
* You should have received a copy of the GNU General Public License along with
* NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- **/
+ */
+
#ifndef NFD_DAEMON_MGMT_NOTIFICATION_STREAM_HPP
#define NFD_DAEMON_MGMT_NOTIFICATION_STREAM_HPP
@@ -31,7 +33,7 @@
class NotificationStream
{
public:
- NotificationStream(shared_ptr<AppFace> face, const Name& prefix);
+ NotificationStream(shared_ptr<AppFace> face, const Name& prefix, ndn::KeyChain& keyChain);
~NotificationStream();
@@ -42,13 +44,17 @@
shared_ptr<AppFace> m_face;
const Name m_prefix;
uint64_t m_sequenceNo;
+ ndn::KeyChain& m_keyChain;
};
inline
-NotificationStream::NotificationStream(shared_ptr<AppFace> face, const Name& prefix)
+NotificationStream::NotificationStream(shared_ptr<AppFace> face,
+ const Name& prefix,
+ ndn::KeyChain& keyChain)
: m_face(face)
, m_prefix(prefix)
, m_sequenceNo(0)
+ , m_keyChain(keyChain)
{
}
@@ -62,7 +68,7 @@
data->setContent(notification.wireEncode());
data->setFreshnessPeriod(time::seconds(1));
- m_face->sign(*data);
+ m_keyChain.sign(*data);
m_face->put(*data);
++m_sequenceNo;
diff --git a/daemon/mgmt/segment-publisher.cpp b/daemon/mgmt/segment-publisher.cpp
deleted file mode 100644
index 01f3d12..0000000
--- a/daemon/mgmt/segment-publisher.cpp
+++ /dev/null
@@ -1,101 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014 Regents of the University of California,
- * Arizona Board of Regents,
- * Colorado State University,
- * University Pierre & Marie Curie, Sorbonne University,
- * Washington University in St. Louis,
- * Beijing Institute of Technology
- *
- * This file is part of NFD (Named Data Networking Forwarding Daemon).
- * See AUTHORS.md for complete list of NFD authors and contributors.
- *
- * NFD is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "segment-publisher.hpp"
-
-#include "core/logger.hpp"
-#include "face/face.hpp"
-
-#include <ndn-cxx/util/time.hpp>
-
-namespace nfd {
-
-NFD_LOG_INIT("SegmentPublisher");
-
-SegmentPublisher::SegmentPublisher(shared_ptr<AppFace> face,
- const Name& prefix)
- : m_face(face)
- , m_prefix(prefix)
-{
-
-}
-
-
-SegmentPublisher::~SegmentPublisher()
-{
-
-}
-
-void
-SegmentPublisher::publish()
-{
- Name segmentPrefix(m_prefix);
- segmentPrefix.appendVersion();
-
- static const size_t MAX_SEGMENT_SIZE = MAX_NDN_PACKET_SIZE >> 1;
-
- ndn::EncodingBuffer buffer;
-
- generate(buffer);
-
- const uint8_t* rawBuffer = buffer.buf();
- const uint8_t* segmentBegin = rawBuffer;
- const uint8_t* end = rawBuffer + buffer.size();
-
- uint64_t segmentNo = 0;
- while (segmentBegin < end)
- {
- const uint8_t* segmentEnd = segmentBegin + MAX_SEGMENT_SIZE;
- if (segmentEnd > end)
- {
- segmentEnd = end;
- }
-
- Name segmentName(segmentPrefix);
- segmentName.appendSegment(segmentNo);
-
- shared_ptr<Data> data(make_shared<Data>(segmentName));
- data->setContent(segmentBegin, segmentEnd - segmentBegin);
-
- segmentBegin = segmentEnd;
- if (segmentBegin >= end)
- {
- NFD_LOG_DEBUG("final block is " << segmentNo);
- data->setFinalBlockId(segmentName[-1]);
- }
-
- NFD_LOG_DEBUG("publishing segment #" << segmentNo);
- publishSegment(data);
- segmentNo++;
- }
-}
-
-void
-SegmentPublisher::publishSegment(shared_ptr<Data>& data)
-{
- m_face->sign(*data);
- m_face->put(*data);
-}
-
-} // namespace nfd
diff --git a/daemon/mgmt/segment-publisher.hpp b/daemon/mgmt/segment-publisher.hpp
deleted file mode 100644
index eeefda7..0000000
--- a/daemon/mgmt/segment-publisher.hpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2014 Regents of the University of California,
- * Arizona Board of Regents,
- * Colorado State University,
- * University Pierre & Marie Curie, Sorbonne University,
- * Washington University in St. Louis,
- * Beijing Institute of Technology
- *
- * This file is part of NFD (Named Data Networking Forwarding Daemon).
- * See AUTHORS.md for complete list of NFD authors and contributors.
- *
- * NFD is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NFD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#ifndef NFD_DAEMON_MGMT_SEGMENT_PUBLISHER_HPP
-#define NFD_DAEMON_MGMT_SEGMENT_PUBLISHER_HPP
-
-#include "common.hpp"
-#include "mgmt/app-face.hpp"
-
-#include <ndn-cxx/encoding/encoding-buffer.hpp>
-
-namespace nfd {
-
-class AppFace;
-
-class SegmentPublisher : noncopyable
-{
-public:
- SegmentPublisher(shared_ptr<AppFace> face,
- const Name& prefix);
-
- virtual
- ~SegmentPublisher();
-
- void
- publish();
-
-protected:
-
- virtual size_t
- generate(ndn::EncodingBuffer& outBuffer) =0;
-
-private:
- void
- publishSegment(shared_ptr<Data>& data);
-
-private:
- shared_ptr<AppFace> m_face;
- const Name m_prefix;
-};
-
-} // namespace nfd
-
-#endif // NFD_DAEMON_MGMT_SEGMENT_PUBLISHER_HPP
diff --git a/daemon/mgmt/status-server.cpp b/daemon/mgmt/status-server.cpp
index 51faca4..8861b9a 100644
--- a/daemon/mgmt/status-server.cpp
+++ b/daemon/mgmt/status-server.cpp
@@ -32,10 +32,11 @@
const Name StatusServer::DATASET_PREFIX = "ndn:/localhost/nfd/status";
const time::milliseconds StatusServer::RESPONSE_FRESHNESS = time::milliseconds(5000);
-StatusServer::StatusServer(shared_ptr<AppFace> face, Forwarder& forwarder)
+StatusServer::StatusServer(shared_ptr<AppFace> face, Forwarder& forwarder, ndn::KeyChain& keyChain)
: m_face(face)
, m_forwarder(forwarder)
, m_startTimestamp(time::system_clock::now())
+ , m_keyChain(keyChain)
{
m_face->setInterestFilter(DATASET_PREFIX, bind(&StatusServer::onInterest, this, _2));
}
@@ -53,7 +54,7 @@
shared_ptr<ndn::nfd::ForwarderStatus> status = this->collectStatus();
data->setContent(status->wireEncode());
- m_face->sign(*data);
+ m_keyChain.sign(*data);
m_face->put(*data);
}
diff --git a/daemon/mgmt/status-server.hpp b/daemon/mgmt/status-server.hpp
index c046adf..16dbf8e 100644
--- a/daemon/mgmt/status-server.hpp
+++ b/daemon/mgmt/status-server.hpp
@@ -1,11 +1,12 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
- * Copyright (c) 2014 Regents of the University of California,
- * Arizona Board of Regents,
- * Colorado State University,
- * University Pierre & Marie Curie, Sorbonne University,
- * Washington University in St. Louis,
- * Beijing Institute of Technology
+ * Copyright (c) 2014, Regents of the University of California,
+ * Arizona Board of Regents,
+ * Colorado State University,
+ * University Pierre & Marie Curie, Sorbonne University,
+ * Washington University in St. Louis,
+ * Beijing Institute of Technology,
+ * The University of Memphis
*
* This file is part of NFD (Named Data Networking Forwarding Daemon).
* See AUTHORS.md for complete list of NFD authors and contributors.
@@ -20,7 +21,7 @@
*
* You should have received a copy of the GNU General Public License along with
* NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- **/
+ */
#ifndef NFD_DAEMON_MGMT_STATUS_SERVER_HPP
#define NFD_DAEMON_MGMT_STATUS_SERVER_HPP
@@ -35,7 +36,7 @@
class StatusServer : noncopyable
{
public:
- StatusServer(shared_ptr<AppFace> face, Forwarder& forwarder);
+ StatusServer(shared_ptr<AppFace> face, Forwarder& forwarder, ndn::KeyChain& keyChain);
private:
void
@@ -51,6 +52,7 @@
shared_ptr<AppFace> m_face;
Forwarder& m_forwarder;
time::system_clock::TimePoint m_startTimestamp;
+ ndn::KeyChain& m_keyChain;
};
} // namespace nfd
diff --git a/daemon/mgmt/strategy-choice-manager.cpp b/daemon/mgmt/strategy-choice-manager.cpp
index b51badc..1193900 100644
--- a/daemon/mgmt/strategy-choice-manager.cpp
+++ b/daemon/mgmt/strategy-choice-manager.cpp
@@ -1,12 +1,12 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
- * Copyright (c) 2014 Regents of the University of California,
- * Arizona Board of Regents,
- * Colorado State University,
- * University Pierre & Marie Curie, Sorbonne University,
- * Washington University in St. Louis,
- * Beijing Institute of Technology,
- * The University of Memphis
+ * Copyright (c) 2014, Regents of the University of California,
+ * Arizona Board of Regents,
+ * Colorado State University,
+ * University Pierre & Marie Curie, Sorbonne University,
+ * Washington University in St. Louis,
+ * Beijing Institute of Technology,
+ * The University of Memphis
*
* This file is part of NFD (Named Data Networking Forwarding Daemon).
* See AUTHORS.md for complete list of NFD authors and contributors.
@@ -21,7 +21,7 @@
*
* You should have received a copy of the GNU General Public License along with
* NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- **/
+ */
#include "strategy-choice-manager.hpp"
#include "table/strategy-choice.hpp"
@@ -46,10 +46,11 @@
const Name StrategyChoiceManager::LIST_DATASET_PREFIX("/localhost/nfd/strategy-choice/list");
StrategyChoiceManager::StrategyChoiceManager(StrategyChoice& strategyChoice,
- shared_ptr<InternalFace> face)
- : ManagerBase(face, STRATEGY_CHOICE_PRIVILEGE)
+ shared_ptr<InternalFace> face,
+ ndn::KeyChain& keyChain)
+ : ManagerBase(face, STRATEGY_CHOICE_PRIVILEGE, keyChain)
, m_strategyChoice(strategyChoice)
- , m_listPublisher(strategyChoice, m_face, LIST_DATASET_PREFIX)
+ , m_listPublisher(strategyChoice, *m_face, LIST_DATASET_PREFIX, keyChain)
{
face->setInterestFilter("/localhost/nfd/strategy-choice",
bind(&StrategyChoiceManager::onStrategyChoiceRequest, this, _2));
diff --git a/daemon/mgmt/strategy-choice-manager.hpp b/daemon/mgmt/strategy-choice-manager.hpp
index f3a0ed5..c2ccd53 100644
--- a/daemon/mgmt/strategy-choice-manager.hpp
+++ b/daemon/mgmt/strategy-choice-manager.hpp
@@ -1,12 +1,12 @@
/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
/**
- * Copyright (c) 2014 Regents of the University of California,
- * Arizona Board of Regents,
- * Colorado State University,
- * University Pierre & Marie Curie, Sorbonne University,
- * Washington University in St. Louis,
- * Beijing Institute of Technology,
- * The University of Memphis
+ * Copyright (c) 2014, Regents of the University of California,
+ * Arizona Board of Regents,
+ * Colorado State University,
+ * University Pierre & Marie Curie, Sorbonne University,
+ * Washington University in St. Louis,
+ * Beijing Institute of Technology,
+ * The University of Memphis
*
* This file is part of NFD (Named Data Networking Forwarding Daemon).
* See AUTHORS.md for complete list of NFD authors and contributors.
@@ -21,7 +21,7 @@
*
* You should have received a copy of the GNU General Public License along with
* NFD, e.g., in COPYING.md file. If not, see <http://www.gnu.org/licenses/>.
- **/
+ */
#ifndef NFD_DAEMON_MGMT_STRATEGY_CHOICE_MANAGER_HPP
#define NFD_DAEMON_MGMT_STRATEGY_CHOICE_MANAGER_HPP
@@ -41,7 +41,8 @@
{
public:
StrategyChoiceManager(StrategyChoice& strategyChoice,
- shared_ptr<InternalFace> face);
+ shared_ptr<InternalFace> face,
+ ndn::KeyChain& keyChain);
virtual
~StrategyChoiceManager();
diff --git a/daemon/mgmt/strategy-choice-publisher.cpp b/daemon/mgmt/strategy-choice-publisher.cpp
index add1b73..163ac3a 100644
--- a/daemon/mgmt/strategy-choice-publisher.cpp
+++ b/daemon/mgmt/strategy-choice-publisher.cpp
@@ -35,9 +35,10 @@
StrategyChoicePublisher::StrategyChoicePublisher(const StrategyChoice& strategyChoice,
- shared_ptr<AppFace> face,
- const Name& prefix)
- : SegmentPublisher(face, prefix)
+ AppFace& face,
+ const Name& prefix,
+ ndn::KeyChain& keyChain)
+ : SegmentPublisher(face, prefix, keyChain)
, m_strategyChoice(strategyChoice)
{
diff --git a/daemon/mgmt/strategy-choice-publisher.hpp b/daemon/mgmt/strategy-choice-publisher.hpp
index d19a92e..8322b63 100644
--- a/daemon/mgmt/strategy-choice-publisher.hpp
+++ b/daemon/mgmt/strategy-choice-publisher.hpp
@@ -26,18 +26,20 @@
#ifndef NFD_DAEMON_MGMT_STRATEGY_CHOICE_PUBLISHER_HPP
#define NFD_DAEMON_MGMT_STRATEGY_CHOICE_PUBLISHER_HPP
-#include "mgmt/segment-publisher.hpp"
+#include "core/segment-publisher.hpp"
+#include "mgmt/app-face.hpp"
namespace nfd {
class StrategyChoice;
-class StrategyChoicePublisher : public SegmentPublisher
+class StrategyChoicePublisher : public SegmentPublisher<AppFace>
{
public:
StrategyChoicePublisher(const StrategyChoice& strategyChoice,
- shared_ptr<AppFace> face,
- const Name& prefix);
+ AppFace& face,
+ const Name& prefix,
+ ndn::KeyChain& keyChain);
virtual
~StrategyChoicePublisher();