Rate recorder trace helper
Also a small change in CCNx trace API
diff --git a/model/ccnx-content-store.cc b/model/ccnx-content-store.cc
index 4875386..b0c4858 100644
--- a/model/ccnx-content-store.cc
+++ b/model/ccnx-content-store.cc
@@ -150,7 +150,7 @@
}
-boost::tuple<Ptr<Packet>, Ptr<const CcnxContentObjectHeader> >
+boost::tuple<Ptr<Packet>, Ptr<const CcnxContentObjectHeader>, Ptr<const Packet> >
CcnxContentStore::Lookup (Ptr<const CcnxInterestHeader> interest)
{
NS_LOG_FUNCTION_NOARGS ();
@@ -162,9 +162,9 @@
m_contentStore.project<i_mru> (it));
// return fully formed CCNx packet
- return boost::make_tuple (it->GetFullyFormedCcnxPacket (), it->GetHeader ());
+ return boost::make_tuple (it->GetFullyFormedCcnxPacket (), it->GetHeader (), it->GetPacket ());
}
- return boost::tuple<Ptr<Packet>, Ptr<CcnxContentObjectHeader> > (0, 0);
+ return boost::tuple<Ptr<Packet>, Ptr<CcnxContentObjectHeader>, Ptr<Packet> > (0, 0, 0);
}
void
diff --git a/model/ccnx-content-store.h b/model/ccnx-content-store.h
index dd0f884..9f07a47 100644
--- a/model/ccnx-content-store.h
+++ b/model/ccnx-content-store.h
@@ -174,7 +174,7 @@
* If an entry is found, it is promoted to the top of most recent
* used entries index, \see m_contentStore
*/
- boost::tuple<Ptr<Packet>, Ptr<const CcnxContentObjectHeader> >
+ boost::tuple<Ptr<Packet>, Ptr<const CcnxContentObjectHeader>, Ptr<const Packet> >
Lookup (Ptr<const CcnxInterestHeader> interest);
/**
@@ -215,22 +215,6 @@
* Release build dumps everything in MRU order
*/
void Print () const;
-
-protected:
- // /**
- // * \brief Move the given CS entry to the head of the list
- // *
- // * \param entry Content Store entry
- // */
- // void Promote( CsEntry &entry );
-
- /**
- * \todo Alex: DoDispose and NotifyNewAggregate are seem to be very
- * important, but I'm not yet sure what exactly they are supposed to
- * do
- */
- // virtual void DoDispose ();
- // virtual void NotifyNewAggregate ();
private:
CcnxContentStore (const CcnxContentStore &o); ///< Disabled copy constructor
@@ -244,7 +228,7 @@
* \brief Content store implemented as a Boost.MultiIndex container
* \internal
*/
- CcnxContentStoreContainer::type m_contentStore;
+ CcnxContentStoreContainer::type m_contentStore;
};
inline std::ostream&
diff --git a/model/ccnx-l3-protocol.cc b/model/ccnx-l3-protocol.cc
index 7f5f195..2e55164 100644
--- a/model/ccnx-l3-protocol.cc
+++ b/model/ccnx-l3-protocol.cc
@@ -423,8 +423,9 @@
}
Ptr<Packet> contentObject;
- Ptr<const CcnxContentObjectHeader> contentObjectHeader; // unused for now
- tie (contentObject, contentObjectHeader) = m_contentStore->Lookup (header);
+ Ptr<const CcnxContentObjectHeader> contentObjectHeader; // used for tracing
+ Ptr<const Packet> payload; // used for tracing
+ tie (contentObject, contentObjectHeader, payload) = m_contentStore->Lookup (header);
if (contentObject != 0)
{
NS_ASSERT (contentObjectHeader != 0);
@@ -432,7 +433,7 @@
NS_LOG_LOGIC("Found in cache");
incomingFace->Send (contentObject);
- m_outData (contentObjectHeader, true, incomingFace);
+ m_outData (contentObjectHeader, payload, true, incomingFace);
// Set pruning timout on PIT entry (instead of deleting the record)
m_pit->modify (m_pit->iterator_to (pitEntry),
@@ -533,7 +534,7 @@
{
NS_LOG_FUNCTION (incomingFace << header << payload << packet);
- m_inData (header, incomingFace);
+ m_inData (header, payload, incomingFace);
// 1. Lookup PIT entry
try
@@ -580,7 +581,7 @@
if (incoming.m_face != incomingFace)
{
incoming.m_face->Send (packet->Copy ());
- m_outData (header, false, incoming.m_face);
+ m_outData (header, payload, false, incoming.m_face);
}
// successfull forwarded data trace
@@ -600,7 +601,7 @@
// (unsolicited data packets should not "poison" content store)
//drop dulicated or not requested data packet
- m_dropData (header, UNSOLICITED, incomingFace);
+ m_dropData (header, payload, UNSOLICITED, incomingFace);
return; // do not process unsoliced data packets
}
}
diff --git a/model/ccnx.h b/model/ccnx.h
index f87da94..8d565c1 100644
--- a/model/ccnx.h
+++ b/model/ccnx.h
@@ -197,14 +197,14 @@
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
- TracedCallback<Ptr<const CcnxContentObjectHeader>,
+ TracedCallback<Ptr<const CcnxContentObjectHeader>, Ptr<const Packet>,
bool /*from cache*/,
Ptr<const CcnxFace> > m_outData;
- TracedCallback<Ptr<const CcnxContentObjectHeader>,
+ TracedCallback<Ptr<const CcnxContentObjectHeader>, Ptr<const Packet>,
Ptr<const CcnxFace> > m_inData;
- TracedCallback<Ptr<const CcnxContentObjectHeader>,
+ TracedCallback<Ptr<const CcnxContentObjectHeader>, Ptr<const Packet>,
DropReason,
Ptr<const CcnxFace> > m_dropData;
};