21 #include "ns3/flow-probe.h"
22 #include "ns3/flow-monitor.h"
31 .SetGroupName (
"FlowMonitor")
44 : m_flowMonitor (flowMonitor)
88 os << std::string (
indent,
' ' ) <<
"<FlowProbe index=\"" << index <<
"\">\n";
92 for (Stats::const_iterator iter =
m_stats.begin (); iter !=
m_stats.end (); iter++)
94 os << std::string (
indent,
' ' );
96 <<
" flowId=\"" << iter->first <<
"\""
97 <<
" packets=\"" << iter->second.packets <<
"\""
98 <<
" bytes=\"" << iter->second.bytes <<
"\""
99 <<
" delayFromFirstProbeSum=\"" << iter->second.delayFromFirstProbeSum <<
"\""
102 for (uint32_t reasonCode = 0; reasonCode < iter->second.packetsDropped.size (); reasonCode++)
104 os << std::string (
indent,
' ' );
105 os <<
"<packetsDropped reasonCode=\"" << reasonCode <<
"\""
106 <<
" number=\"" << iter->second.packetsDropped[reasonCode]
109 for (uint32_t reasonCode = 0; reasonCode < iter->second.bytesDropped.size (); reasonCode++)
111 os << std::string (
indent,
' ' );
112 os <<
"<bytesDropped reasonCode=\"" << reasonCode <<
"\""
113 <<
" bytes=\"" << iter->second.bytesDropped[reasonCode]
117 os << std::string (
indent,
' ' ) <<
"</FlowStats>\n";
120 os << std::string (
indent,
' ' ) <<
"</FlowProbe>\n";
Stats m_stats
The flow stats.
void AddPacketStats(FlowId flowId, uint32_t packetSize, Time delayFromFirstProbe)
Add a packet data to the flow stats.
FlowProbe(Ptr< FlowMonitor > flowMonitor)
Constructor.
static TypeId GetTypeId(void)
Register this type.
void AddPacketDropStats(FlowId flowId, uint32_t packetSize, uint32_t reasonCode)
Add a packet drop data to the flow stats.
std::map< FlowId, FlowStats > Stats
Container to map FlowId -> FlowStats.
Stats GetStats() const
Get the partial flow statistics stored in this probe.
virtual void DoDispose(void)
Destructor implementation.
void SerializeToXmlStream(std::ostream &os, uint16_t indent, uint32_t index) const
Serializes the results to an std::ostream in XML format.
Ptr< FlowMonitor > m_flowMonitor
the FlowMonitor instance
A base class which provides memory management and object aggregation.
virtual void DoDispose(void)
Destructor implementation.
Smart pointer class similar to boost::intrusive_ptr.
Simulation virtual time values and global simulation resolution.
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
uint32_t FlowId
Abstract identifier of a packet flow.
def indent(source, debug, level)
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Structure to hold the statistics of a flow.
uint64_t bytes
Number of bytes seen of this flow.
uint32_t packets
Number of packets seen of this flow.
Time delayFromFirstProbeSum
divide by 'packets' to get the average delay from the first (entry) probe up to this one (partial del...
std::vector< uint32_t > packetsDropped
packetsDropped[reasonCode] => number of dropped packets
std::vector< uint64_t > bytesDropped
bytesDropped[reasonCode] => number of dropped bytes
static const uint32_t packetSize