mgmt: Added skeleton for InternalFace
refs: #1137
Change-Id: I5aab5a9cac8da5f31603fb755b934347b63045eb
diff --git a/daemon/mgmt/app-face.hpp b/daemon/mgmt/app-face.hpp
new file mode 100644
index 0000000..af58cdf
--- /dev/null
+++ b/daemon/mgmt/app-face.hpp
@@ -0,0 +1,32 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (C) 2014 Named Data Networking Project
+ * See COPYING for copyright and distribution information.
+ */
+
+#ifndef NFD_MGMT_APP_FACE_HPP
+#define NFD_MGMT_APP_FACE_HPP
+
+#include "common.hpp"
+
+namespace nfd {
+
+typedef ndn::func_lib::function<void(const Name&, const Interest&)> OnInterest;
+
+class AppFace
+{
+public:
+ virtual void
+ setInterestFilter(const Name& filter,
+ OnInterest onInterest) = 0;
+
+ virtual void
+ put(const Data& data) = 0;
+
+ virtual
+ ~AppFace() { }
+};
+
+} // namespace nfd
+
+#endif //NFD_MGMT_APP_FACE_HPP
diff --git a/daemon/mgmt/internal-face.cpp b/daemon/mgmt/internal-face.cpp
new file mode 100644
index 0000000..cd66b4a
--- /dev/null
+++ b/daemon/mgmt/internal-face.cpp
@@ -0,0 +1,56 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (C) 2014 Named Data Networking Project
+ * See COPYING for copyright and distribution information.
+ */
+
+#include "internal-face.hpp"
+
+namespace nfd {
+
+const FaceId INTERNAL_FACE_FACEID = 0;
+
+InternalFace::InternalFace()
+ : Face(INTERNAL_FACE_FACEID)
+{
+
+}
+
+void
+InternalFace::sendInterest(const Interest& interest)
+{
+ static const Name prefixRegPrefix("/localhost/nfd/prefixreg");
+ const Name& interestName = interest.getName();
+
+ if (prefixRegPrefix.isPrefixOf(interestName))
+ {
+ //invoke FibManager
+ }
+ //Drop Interest
+}
+
+void
+InternalFace::sendData(const Data& data)
+{
+
+}
+
+void
+InternalFace::setInterestFilter(const Name& filter,
+ OnInterest onInterest)
+{
+
+}
+
+void
+InternalFace::put(const Data& data)
+{
+ onReceiveData(data);
+}
+
+InternalFace::~InternalFace()
+{
+
+}
+
+} // namespace nfd
diff --git a/daemon/mgmt/internal-face.hpp b/daemon/mgmt/internal-face.hpp
new file mode 100644
index 0000000..7798143
--- /dev/null
+++ b/daemon/mgmt/internal-face.hpp
@@ -0,0 +1,52 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (C) 2014 Named Data Networking Project
+ * See COPYING for copyright and distribution information.
+ */
+
+#ifndef NFD_MGMT_INTERNAL_FACE_HPP
+#define NFD_MGMT_INTERNAL_FACE_HPP
+
+#include "face/face.hpp"
+#include "app-face.hpp"
+
+namespace nfd {
+
+class InternalFace : public Face, public AppFace
+{
+public:
+
+ InternalFace();
+
+ // Overridden Face methods for forwarder
+
+ virtual void
+ sendInterest(const Interest& interest);
+
+ virtual void
+ sendData(const Data& data);
+
+ // Methods implementing AppFace interface. Do not invoke from forwarder.
+
+ virtual void
+ setInterestFilter(const Name& filter,
+ OnInterest onInterest);
+
+ virtual void
+ put(const Data& data);
+
+ virtual
+ ~InternalFace();
+
+private:
+
+ // void
+ // onConfig(ConfigFile::Node section, bool isDryRun);
+
+ std::map<Name, OnInterest> m_interestFilters;
+
+};
+
+} // namespace nfd
+
+#endif //NFD_MGMT_INTERNAL_FACE_HPP
diff --git a/tests/mgmt/internal-face.cpp b/tests/mgmt/internal-face.cpp
new file mode 100644
index 0000000..0ece5b6
--- /dev/null
+++ b/tests/mgmt/internal-face.cpp
@@ -0,0 +1,31 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (C) 2014 Named Data Networking Project
+ * See COPYING for copyright and distribution information.
+ */
+
+#include "mgmt/internal-face.hpp"
+
+#include <boost/test/unit_test.hpp>
+
+namespace nfd {
+
+BOOST_AUTO_TEST_SUITE(MgmtInternalFace)
+
+BOOST_AUTO_TEST_CASE(ValidPrefixRegistration)
+{
+ InternalFace internal;
+ Interest regInterest("/localhost/nfd/prefixreg/hello/world");
+ internal.sendInterest(regInterest);
+}
+
+BOOST_AUTO_TEST_CASE(InvalidPrefixRegistration)
+{
+ InternalFace internal;
+ Interest nonRegInterest("/hello/world");
+ internal.sendInterest(nonRegInterest);
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+
+} // namespace nfd