traffic-control: (fixes #2940) QueueDisc SojournTime should be TracedCallback
TracedCallback is invoked for all sojourn time results; TracedValue only
for results that changed value from last time
--- a/CHANGES.html Fri Jul 13 16:11:31 2018 +0300
+++ b/CHANGES.html Sat Jul 14 07:57:49 2018 -0700
@@ -93,6 +93,7 @@
<li>QueueDisc::DequeuePeeked has been merged into QueueDisc::Dequeue and hence no longer exists.</li>
<li>The QueueDisc base class now provides a default implementation of the DoPeek private method
based on the QueueDisc::PeekDequeue method, which is now no longer available.</li>
+ <li>The QueueDisc::SojournTime trace source is changed from a TracedValue to a TracedCallback; callbacks that hook this trace must provide one ns3::Time argument, not two.</li>
</ul>
<h2>Changes to build system:</h2>
<ul>
--- a/examples/traffic-control/traffic-control.cc Fri Jul 13 16:11:31 2018 +0300
+++ b/examples/traffic-control/traffic-control.cc Sat Jul 14 07:57:49 2018 -0700
@@ -79,9 +79,9 @@
}
void
-SojournTimeTrace (Time oldValue, Time newValue)
+SojournTimeTrace (Time sojournTime)
{
- std::cout << "Sojourn time " << newValue.ToDouble (Time::MS) << "ms" << std::endl;
+ std::cout << "Sojourn time " << sojournTime.ToDouble (Time::MS) << "ms" << std::endl;
}
int
--- a/src/traffic-control/model/queue-disc.cc Fri Jul 13 16:11:31 2018 +0300
+++ b/src/traffic-control/model/queue-disc.cc Sat Jul 14 07:57:49 2018 -0700
@@ -317,7 +317,7 @@
.AddTraceSource ("SojournTime",
"Sojourn time of the last packet dequeued from the queue disc",
MakeTraceSourceAccessor (&QueueDisc::m_sojourn),
- "ns3::TracedValueCallback::Time")
+ "ns3::Time::TracedCallback")
;
return tid;
}
@@ -325,7 +325,6 @@
QueueDisc::QueueDisc (QueueDiscSizePolicy policy)
: m_nPackets (0),
m_nBytes (0),
- m_sojourn (0),
m_maxSize (QueueSize ("1p")), // to avoid that setting the mode at construction time is ignored
m_running (false),
m_peeked (false),
@@ -702,7 +701,7 @@
m_stats.nTotalDequeuedPackets++;
m_stats.nTotalDequeuedBytes += item->GetSize ();
- m_sojourn = Simulator::Now () - item->GetTimeStamp ();
+ m_sojourn (Simulator::Now () - item->GetTimeStamp ());
NS_LOG_LOGIC ("m_traceDequeue (p)");
m_traceDequeue (item);
--- a/src/traffic-control/model/queue-disc.h Fri Jul 13 16:11:31 2018 +0300
+++ b/src/traffic-control/model/queue-disc.h Sat Jul 14 07:57:49 2018 -0700
@@ -22,6 +22,7 @@
#include "ns3/object.h"
#include "ns3/traced-value.h"
+#include "ns3/traced-callback.h"
#include "ns3/net-device.h"
#include "ns3/queue-item.h"
#include "ns3/queue-size.h"
@@ -665,7 +666,7 @@
TracedValue<uint32_t> m_nPackets; //!< Number of packets in the queue
TracedValue<uint32_t> m_nBytes; //!< Number of bytes in the queue
- TracedValue<Time> m_sojourn; //!< Sojourn time of the latest dequeued packet
+ TracedCallback<Time> m_sojourn; //!< Sojourn time of the latest dequeued packet
QueueSize m_maxSize; //!< max queue size
Stats m_stats; //!< The collected statistics