model: small API change with ndn::ForwardingStrategy
diff --git a/model/fw/ndn-forwarding-strategy.h b/model/fw/ndn-forwarding-strategy.h
index b838565..04b34a2 100644
--- a/model/fw/ndn-forwarding-strategy.h
+++ b/model/fw/ndn-forwarding-strategy.h
@@ -62,7 +62,7 @@
 
   /**
    * \brief Actual processing of incoming Ndn interests. Note, interests do not have payload
-   * 
+   *
    * Processing Interest packets
    * @param face    incoming face
    * @param header  deserialized Interest header
@@ -75,7 +75,7 @@
 
   /**
    * \brief Actual processing of incoming Ndn content objects
-   * 
+   *
    * Processing ContentObject packets
    * @param face    incoming face
    * @param header  deserialized ContentObject header
@@ -101,7 +101,7 @@
    */
   virtual void
   AddFace (Ptr<Face> face);
-  
+
   /**
    * @brief Event fired every time face is removed from NDN stack
    * @param face face to be removed
@@ -124,7 +124,7 @@
    */
   virtual void
   WillRemoveFibEntry (Ptr<fib::Entry> fibEntry);
-  
+
 protected:
   /**
    * @brief An event that is fired every time a new PIT entry is created
@@ -132,7 +132,7 @@
    * Note that if NDN node is receiving a similar interest (interest for the same name),
    * then either DidReceiveDuplicateInterest, DidSuppressSimilarInterest, or DidForwardSimilarInterest
    * will be called
-   * 
+   *
    * Suppression of similar Interests is controlled using ShouldSuppressIncomingInterest virtual method
    *
    * @param inFace  incoming face
@@ -147,13 +147,13 @@
                      Ptr<const InterestHeader> header,
                      Ptr<const Packet> origPacket,
                      Ptr<pit::Entry> pitEntry);
-  
+
   /**
    * @brief An event that is fired every time a new PIT entry cannot be created (e.g., PIT container imposes a limit)
    *
    * Note that this call can be called only for non-similar Interest (i.e., there is an attempt to create a new PIT entry).
    * For any non-similar Interests, either FailedToCreatePitEntry or DidCreatePitEntry is called.
-   * 
+   *
    * @param inFace  incoming face
    * @param header  deserialized Interest header
    * @param origPacket  original packet
@@ -162,7 +162,7 @@
   FailedToCreatePitEntry (Ptr<Face> inFace,
                           Ptr<const InterestHeader> header,
                           Ptr<const Packet> origPacket);
-  
+
   /**
    * @brief An event that is fired every time a duplicated Interest is received
    *
@@ -262,7 +262,7 @@
    * Note that when Interest is satisfied from the cache, incoming face will be 0
    *
    * @param inFace  incoming face
-   * @param pitEntry an existing PIT entry, corresponding to the duplicated Interest   
+   * @param pitEntry an existing PIT entry, corresponding to the duplicated Interest
    */
   virtual void
   WillSatisfyPendingInterest (Ptr<Face> inFace,
@@ -305,6 +305,22 @@
                   Ptr<pit::Entry> pitEntry);
 
   /**
+   * @brief Event which is fired every time a requested (solicited) DATA packet (there is an active PIT entry) is received
+   *
+   * @param inFace  incoming face
+   * @param header  deserialized ContentObject header
+   * @param payload ContentObject payload
+   * @param origPacket  original packet
+   * @param didCreateCacheEntry flag indicating whether a cache entry was added for this data packet or not (e.g., packet already exists in cache)
+   */
+  virtual void
+  DidReceiveSolicitedData (Ptr<Face> inFace,
+                           Ptr<const ContentObjectHeader> header,
+                           Ptr<const Packet> payload,
+                           Ptr<const Packet> origPacket,
+                           bool didCreateCacheEntry);
+
+  /**
    * @brief Event which is fired every time an unsolicited DATA packet (no active PIT entry) is received
    *
    * The current implementation allows ignoring unsolicited DATA (by default), or cache it by setting
@@ -314,12 +330,14 @@
    * @param header  deserialized ContentObject header
    * @param payload ContentObject payload
    * @param origPacket  original packet
+   * @param didCreateCacheEntry flag indicating whether a cache entry was added for this data packet or not (e.g., packet already exists in cache)
    */
   virtual void
   DidReceiveUnsolicitedData (Ptr<Face> inFace,
                              Ptr<const ContentObjectHeader> header,
                              Ptr<const Packet> payload,
-                             Ptr<const Packet> origPacket);
+                             Ptr<const Packet> origPacket,
+                             bool didCreateCacheEntry);
 
   /**
    * @brief Method implementing logic to suppress (collapse) similar Interests
@@ -362,7 +380,7 @@
                       Ptr<const InterestHeader> header,
                       Ptr<const Packet> origPacket,
                       Ptr<pit::Entry> pitEntry);
-  
+
   /**
    * @brief Method implementing actual interest forwarding, taking into account CanSendOutInterest decision
    *
@@ -417,7 +435,7 @@
                      Ptr<const InterestHeader> header,
                      Ptr<const Packet> origPacket,
                      Ptr<pit::Entry> pitEntry);
-  
+
   /**
    * @brief Virtual method to perform Interest propagation according to the forwarding strategy logic
    *
@@ -442,20 +460,20 @@
                        Ptr<const InterestHeader> header,
                        Ptr<const Packet> origPacket,
                        Ptr<pit::Entry> pitEntry) = 0;
-  
+
 protected:
-  // inherited from Object class                                                                                                                                                        
+  // inherited from Object class
   virtual void NotifyNewAggregate (); ///< @brief Even when object is aggregated to another Object
   virtual void DoDispose (); ///< @brief Do cleanup
-  
-protected:  
+
+protected:
   Ptr<Pit> m_pit; ///< \brief Reference to PIT to which this forwarding strategy is associated
-  Ptr<Fib> m_fib; ///< \brief FIB  
+  Ptr<Fib> m_fib; ///< \brief FIB
   Ptr<ContentStore> m_contentStore; ///< \brief Content store (for caching purposes only)
 
   bool m_cacheUnsolicitedData;
   bool m_detectRetransmissions;
-  
+
   TracedCallback<Ptr<const InterestHeader>,
                  Ptr<const Face> > m_outInterests; ///< @brief Transmitted interests trace
 
@@ -464,7 +482,7 @@
 
   TracedCallback<Ptr<const InterestHeader>,
                  Ptr<const Face> > m_dropInterests; ///< @brief trace of dropped Interests
-  
+
   ////////////////////////////////////////////////////////////////////
   ////////////////////////////////////////////////////////////////////
   ////////////////////////////////////////////////////////////////////