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