table: mock PIT

refs #1128

Change-Id: I8943ad07d93422dc456fd051b2e4c0d5f38bc227
diff --git a/daemon/table/pit-face-record.hpp b/daemon/table/pit-face-record.hpp
new file mode 100644
index 0000000..d2dfe2c
--- /dev/null
+++ b/daemon/table/pit-face-record.hpp
@@ -0,0 +1,83 @@
+/* -*- 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_PIT_FACE_RECORD_HPP
+#define NFD_TABLE_PIT_FACE_RECORD_HPP
+
+#include "face/face.hpp"
+#include "core/time.hpp"
+
+namespace ndn {
+namespace pit {
+
+/** \class FaceRecord
+ *  \brief contains information about an Interest
+ *         on an incoming or outgoing face
+ *  \note This is an implementation detail to extract common functionality
+ *        of InRecord and OutRecord
+ */
+class FaceRecord
+{
+public:
+  explicit
+  FaceRecord(shared_ptr<Face> face);
+  
+  FaceRecord(const FaceRecord& other);
+  
+  shared_ptr<Face>
+  getFace() const;
+  
+  uint32_t
+  getLastNonce() const;
+  
+  time::Point
+  getLastRenewed() const;
+  
+  /** \brief gives the time point this record expires
+   *  \return{ getLastRenewed() + InterestLifetime }
+   */
+  time::Point
+  getExpiry() const;
+
+  /// updates lastNonce, lastRenewed, expiry fields
+  void
+  update(const Interest& interest);
+
+private:
+  shared_ptr<Face> m_face;
+  uint32_t m_lastNonce;
+  time::Point m_lastRenewed;
+  time::Point m_expiry;
+};
+
+inline shared_ptr<Face>
+FaceRecord::getFace() const
+{
+  return m_face;
+}
+
+inline uint32_t
+FaceRecord::getLastNonce() const
+{
+  return m_lastNonce;
+}
+
+inline time::Point
+FaceRecord::getLastRenewed() const
+{
+  return m_lastRenewed;
+}
+
+inline time::Point
+FaceRecord::getExpiry() const
+{
+  return m_expiry;
+}
+
+} // namespace pit
+} // namespace ndn
+
+#endif // NFD_TABLE_PIT_FACE_RECORD_HPP