[ndnSIM] fw: Add afterReceiveLoopedInterest strategy trigger
diff --git a/daemon/fw/forwarder.cpp b/daemon/fw/forwarder.cpp
index c9f2d1d..007914c 100644
--- a/daemon/fw/forwarder.cpp
+++ b/daemon/fw/forwarder.cpp
@@ -131,6 +131,8 @@
   if (hasDuplicateNonceInPit) {
     // goto Interest loop pipeline
     this->onInterestLoop(ingress, interest);
+    this->dispatchToStrategy(*pitEntry,
+      [&] (fw::Strategy& strategy) { strategy.afterReceiveLoopedInterest(ingress, interest, *pitEntry); });
     return;
   }
 
diff --git a/daemon/fw/strategy.cpp b/daemon/fw/strategy.cpp
index 151dac8..a5519fa 100644
--- a/daemon/fw/strategy.cpp
+++ b/daemon/fw/strategy.cpp
@@ -148,6 +148,15 @@
 
 Strategy::~Strategy() = default;
 
+
+void
+Strategy::afterReceiveLoopedInterest(const FaceEndpoint& ingress, const Interest& interest,
+                                     pit::Entry& pitEntry)
+{
+  NFD_LOG_DEBUG("afterReceiveLoopedInterest pitEntry=" << pitEntry.getName()
+                << " in=" << ingress);
+}
+
 void
 Strategy::beforeSatisfyInterest(const shared_ptr<pit::Entry>& pitEntry,
                                 const FaceEndpoint& ingress, const Data& data)
diff --git a/daemon/fw/strategy.hpp b/daemon/fw/strategy.hpp
index cc1b2b8..4b472b1 100644
--- a/daemon/fw/strategy.hpp
+++ b/daemon/fw/strategy.hpp
@@ -143,6 +143,19 @@
   afterReceiveInterest(const FaceEndpoint& ingress, const Interest& interest,
                        const shared_ptr<pit::Entry>& pitEntry) = 0;
 
+
+  /** \brief trigger after a looped Interest is received
+   *
+   *  The Interest:
+   *  - does not violate Scope
+   *  - IS looped
+   *  - cannot be satisfied by ContentStore
+   *  - is under a namespace managed by this strategy
+   */
+  virtual void
+  afterReceiveLoopedInterest(const FaceEndpoint& ingress, const Interest& interest,
+                             pit::Entry& pitEntry);
+
   /** \brief trigger before PIT entry is satisfied
    *
    *  This trigger is invoked when an incoming Data satisfies more than one PIT entry.