fw: basic forwarding procedure & strategy skeleton

refs #1131 #1136

Change-Id: I3e97cb17bf85082b6499a310120409379f8eaa65
diff --git a/daemon/table/pit-entry.cpp b/daemon/table/pit-entry.cpp
index 094ea6e..7a719df 100644
--- a/daemon/table/pit-entry.cpp
+++ b/daemon/table/pit-entry.cpp
@@ -34,9 +34,12 @@
 }
 
 bool
-Entry::isNonceSeen(uint32_t nonce) const
+Entry::addNonce(uint32_t nonce)
 {
-  return m_nonces.count(nonce) > 0;
+  std::pair<std::set<uint32_t>::iterator, bool> insertResult =
+    m_nonces.insert(nonce);
+
+  return insertResult.second;
 }
 
 static inline bool
@@ -56,7 +59,6 @@
   }
   
   it->update(interest);
-  m_nonces.insert(interest.getNonce());
   return it;
 }
 
diff --git a/daemon/table/pit-entry.hpp b/daemon/table/pit-entry.hpp
index 00e8a79..98665fc 100644
--- a/daemon/table/pit-entry.hpp
+++ b/daemon/table/pit-entry.hpp
@@ -9,6 +9,7 @@
 
 #include "pit-in-record.hpp"
 #include "pit-out-record.hpp"
+#include "core/scheduler.hpp"
 
 namespace nfd {
 namespace pit {
@@ -46,14 +47,17 @@
   const OutRecordCollection&
   getOutRecords() const;
   
-  /** \brief determines whether nonce is seen before
-   *         in an incoming or outgoing Interest
+  /** \brief records a nonce
+   *
+   *  \return{ true if nonce is new; false if nonce is seen before }
    */
   bool
-  isNonceSeen(uint32_t nonce) const;
+  addNonce(uint32_t nonce);
   
   /** \brief inserts a InRecord for face, and updates it with interest
+   *
    *  If InRecord for face exists, the existing one is updated.
+   *  This method does not add the Nonce as a seen Nonce.
    *  \return{ an iterator to the InRecord }
    */
   InRecordCollection::iterator
@@ -64,6 +68,7 @@
   deleteInRecords();
   
   /** \brief inserts a OutRecord for face, and updates it with interest
+   *
    *  If OutRecord for face exists, the existing one is updated.
    *  \return{ an iterator to the OutRecord }
    */
@@ -73,6 +78,10 @@
   /// deletes one OutRecord for face if exists
   void
   deleteOutRecord(shared_ptr<Face> face);
+  
+public:
+  EventId m_unsatisfyTimer;
+  EventId m_stragglerTimer;
 
 private:
   std::set<uint32_t> m_nonces;