table: Mock implementation of FIB
refs #1127
Change-Id: Ie0bc1fc2ddcc61dd1f1cf10fb1935edde4aff6c5
diff --git a/daemon/table/fib-entry.hpp b/daemon/table/fib-entry.hpp
new file mode 100644
index 0000000..67f5056
--- /dev/null
+++ b/daemon/table/fib-entry.hpp
@@ -0,0 +1,76 @@
+/* -*- 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_TABLE_FIB_ENTRY_HPP
+#define NFD_TABLE_FIB_ENTRY_HPP
+
+#include "fib-nexthop.hpp"
+
+namespace ndn {
+namespace fib {
+
+/** \class NextHopList
+ * \brief represents a collection of nexthops
+ * This type has these methods:
+ * iterator<NextHop> begin()
+ * iterator<NextHop> end()
+ * size_t size()
+ */
+typedef std::vector<fib::NextHop> NextHopList;
+
+/** \class Entry
+ * \brief represents a FIB entry
+ */
+class Entry : noncopyable
+{
+public:
+ Entry(const Name& prefix);
+
+ const Name&
+ getPrefix() const;
+
+ /** \brief gives the nexthops explicitly defined on this entry
+ * This list does not include inherited nexthops.
+ */
+ const NextHopList&
+ getNextHops() const;
+
+ /// adds a nexthop
+ void
+ addNextHop(shared_ptr<Face> face, int32_t cost);
+
+ /// removes a nexthop
+ void
+ removeNextHop(shared_ptr<Face> face);
+
+private:
+ /// sorts the nexthop list
+ void
+ sortNextHops();
+
+private:
+ Name m_prefix;
+ NextHopList m_nextHops;
+};
+
+
+inline const Name&
+Entry::getPrefix() const
+{
+ return m_prefix;
+}
+
+inline const NextHopList&
+Entry::getNextHops() const
+{
+ return m_nextHops;
+}
+
+
+} // namespace fib
+} // namespace ndn
+
+#endif // NFD_TABLE_FIB_ENTRY_HPP