fw: Nack in pipelines and best-route strategy
* in PIT out-record, add last incoming Nack field
* create incoming Nack pipeline
* create outgoing Nack pipeline
* modify Interest loop pipeline to send Nack upon duplicate Nonce
* in strategy API, add after receive Nack trigger and send Nack action
* in best-route strategy, send Nack-NoRoute before rejecting pending Interest
* in best-route strategy, process incoming Nack
Other changes include:
* Pit::find
* StrategyTester saved arguments structs
* TopologyTester transmit at Transport level
refs #3156
Change-Id: I7868561c0838231083d471261200aeb280cc6e9d
diff --git a/daemon/fw/forwarder.hpp b/daemon/fw/forwarder.hpp
index 155ec4a..ebfaa05 100644
--- a/daemon/fw/forwarder.hpp
+++ b/daemon/fw/forwarder.hpp
@@ -90,6 +90,12 @@
void
startProcessData(Face& face, const Data& data);
+ /** \brief start incoming Nack processing
+ * \param nack the incoming Nack, must be created with make_shared
+ */
+ void
+ startProcessNack(Face& face, const lp::Nack& nack);
+
NameTree&
getNameTree();
@@ -128,12 +134,12 @@
/** \brief Content Store miss pipeline
*/
- void
+ VIRTUAL_WITH_TESTS void
onContentStoreMiss(const Face& inFace, shared_ptr<pit::Entry> pitEntry, const Interest& interest);
/** \brief Content Store hit pipeline
*/
- void
+ VIRTUAL_WITH_TESTS void
onContentStoreHit(const Face& inFace, shared_ptr<pit::Entry> pitEntry,
const Interest& interest, const Data& data);
@@ -176,6 +182,16 @@
VIRTUAL_WITH_TESTS void
onOutgoingData(const Data& data, Face& outFace);
+ /** \brief incoming Nack pipeline
+ */
+ VIRTUAL_WITH_TESTS void
+ onIncomingNack(Face& inFace, const lp::Nack& nack);
+
+ /** \brief outgoing Nack pipeline
+ */
+ VIRTUAL_WITH_TESTS void
+ onOutgoingNack(shared_ptr<pit::Entry> pitEntry, const Face& outFace, const lp::NackHeader& nack);
+
PROTECTED_WITH_TESTS_ELSE_PRIVATE:
VIRTUAL_WITH_TESTS void
setUnsatisfyTimer(shared_ptr<pit::Entry> pitEntry);