Enabling trace sources for Interest-Data lifetimes
diff --git a/apps/ndn-consumer.cc b/apps/ndn-consumer.cc
index c889b6d..794bcb9 100644
--- a/apps/ndn-consumer.cc
+++ b/apps/ndn-consumer.cc
@@ -78,6 +78,12 @@
 
     .AddTraceSource ("PathWeightsTrace", "PathWeightsTrace",
                     MakeTraceSourceAccessor (&Consumer::m_pathWeightsTrace))
+
+    .AddTraceSource ("LastRetransmittedInterestDataDelay", "Delay between last retransmitted Interest and received Data",
+                     MakeTraceSourceAccessor (&Consumer::m_lastRetransmittedInterestDataDelay))
+
+    .AddTraceSource ("FirstInterestDataDelay", "Delay between first transmitted Interest and received Data",
+                     MakeTraceSourceAccessor (&Consumer::m_firstInterestDataDelay))
     ;
 
   return tid;
@@ -172,21 +178,10 @@
 
   uint32_t seq=std::numeric_limits<uint32_t>::max (); //invalid
 
-  // std::cout << Simulator::Now ().ToDouble (Time::S) << "s max -> " << m_seqMax << "\n";
-  
   while (m_retxSeqs.size ())
     {
       seq = *m_retxSeqs.begin ();
       m_retxSeqs.erase (m_retxSeqs.begin ());
-
-      // NS_ASSERT (m_seqLifetimes.find (seq) != m_seqLifetimes.end ());
-      // if (m_seqLifetimes.find (seq)->time <= Simulator::Now ())
-      //   {
-          
-      //     NS_LOG_DEBUG ("Expire " << seq);
-      //     m_seqLifetimes.erase (seq); // lifetime expired. Trying to find another unexpired sequence number
-      //     continue;
-      //   }
       break;
     }
 
@@ -203,8 +198,6 @@
       seq = m_seq++;
     }
   
-  // std::cout << Simulator::Now ().ToDouble (Time::S) << "s -> " << seq << "\n";
-  
   //
   Ptr<NameComponents> nameWithSequence = Create<NameComponents> (m_interestName);
   (*nameWithSequence) (seq);
@@ -224,7 +217,8 @@
   NS_LOG_DEBUG ("Trying to add " << seq << " with " << Simulator::Now () << ". already " << m_seqTimeouts.size () << " items");  
   
   m_seqTimeouts.insert (SeqTimeout (seq, Simulator::Now ()));
-  m_seqLifetimes.insert (SeqTimeout (seq, Simulator::Now () + m_interestLifeTime)); // only one insert will work. if entry exists, nothing will happen... nothing should happen
+  m_seqLifetimes.insert (SeqTimeout (seq, Simulator::Now ()));
+  
   m_transmittedInterests (&interestHeader, this, m_face);
 
   m_rtt->SentSeq (SequenceNumber32 (seq), 1);
@@ -254,14 +248,26 @@
   uint32_t seq = boost::lexical_cast<uint32_t> (contentObject->GetName ().GetComponents ().back ());
   NS_LOG_INFO ("< DATA for " << seq);
 
-  // SeqTimeoutsContainer::iterator entry = m_seqTimeouts.find (seq);
+  SeqTimeoutsContainer::iterator entry = m_seqTimeouts.find (seq);
+  if (entry != m_seqTimeouts.end ())
+    {
+      m_lastRetransmittedInterestDataDelay (this, seq, Simulator::Now () - entry->time);
+    }
+  else
+    {
+      NS_ASSERT_MSG (entry != m_seqTimeouts.end (), "Something is now right");
+    }
 
-  //  NS_ASSERT_MSG (entry != m_seqTimeouts.end (),
-  //             "Comment out this assert, if it causes problems");
-
-  // if (entry != m_seqTimeouts.end ())
-  //   m_seqTimeouts.erase (entry);
-
+  entry = m_seqLifetimes.find (seq);
+  if (entry != m_seqLifetimes.end ())
+    {
+      m_firstInterestDataDelay (this, seq, Simulator::Now () - entry->time);
+    }
+  else
+    {
+      NS_ASSERT_MSG (entry != m_seqLifetimes.end (), "Something is now right");
+    }
+  
   m_seqLifetimes.erase (seq);
   m_seqTimeouts.erase (seq);
   m_retxSeqs.erase (seq);