fw: basic forwarding procedure & strategy skeleton

refs #1131 #1136

Change-Id: I3e97cb17bf85082b6499a310120409379f8eaa65
diff --git a/daemon/fw/forwarder.hpp b/daemon/fw/forwarder.hpp
index 6395f29..591254e 100644
--- a/daemon/fw/forwarder.hpp
+++ b/daemon/fw/forwarder.hpp
@@ -8,7 +8,11 @@
 #define NFD_FW_FORWARDER_HPP
 
 #include "common.hpp"
+#include "core/scheduler.hpp"
 #include "face/face.hpp"
+#include "table/fib.hpp"
+#include "table/pit.hpp"
+#include "table/cs.hpp"
 
 namespace nfd {
 
@@ -34,10 +38,69 @@
   void
   onData(const Face& face, const Data& data);
   
+private: // pipelines
+  /** \brief incoming Interest pipeline
+   */
+  void
+  onIncomingInterest(Face& inFace, const Interest& interest);
+
+  /** \brief Interest loop pipeline
+   */
+  void
+  onInterestLoop(Face& inFace, const Interest& interest,
+                 shared_ptr<pit::Entry> pitEntry);
+  
+  /** \brief outgoing Interest pipeline
+   */
+  void
+  onOutgoingInterest(shared_ptr<pit::Entry> pitEntry, Face& outFace);
+  
+  /** \brief Interest rebuff pipeline
+   */
+  void
+  onInterestRebuff(shared_ptr<pit::Entry> pitEntry);
+  
+  /** \brief Interest unsatisfied pipeline
+   */
+  void
+  onInterestUnsatisfied(shared_ptr<pit::Entry> pitEntry);
+  
+  /** \brief incoming Data pipeline
+   */
+  void
+  onIncomingData(Face& inFace, const Data& data);
+  
+  /** \brief Data unsolicited pipeline
+   */
+  void
+  onDataUnsolicited(Face& inFace, const Data& data);
+  
+  /** \brief outgoing Data pipeline
+   */
+  void
+  onOutgoingData(const Data& data, Face& outFace);
+
 private:
+  void
+  setUnsatisfyTimer(shared_ptr<pit::Entry> pitEntry);
+  
+  void
+  setStragglerTimer(shared_ptr<pit::Entry> pitEntry);
+  
+  void
+  cancelUnsatisfyAndStragglerTimer(shared_ptr<pit::Entry> pitEntry);
+
+private:
+  Scheduler m_scheduler;
+  Fib m_fib;
+  Pit m_pit;
+  Cs  m_cs;
   // container< shared_ptr<Face> > m_faces;
+  
+  // allow Strategy (base class) to enter pipelines
+  friend class Strategy;
 };
 
-}
+} // namespace nfd
 
 #endif // NFD_FW_FORWARDER_HPP