00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "ns3/log.h"
00022 #include "ns3/nstime.h"
00023
00024 #include "time-data-calculators.h"
00025
00026 using namespace ns3;
00027
00028 NS_LOG_COMPONENT_DEFINE("TimeDataCalculators");
00029
00030
00031
00032
00033 TimeMinMaxAvgTotalCalculator::TimeMinMaxAvgTotalCalculator()
00034 {
00035 m_count = 0;
00036 }
00037 TimeMinMaxAvgTotalCalculator::~TimeMinMaxAvgTotalCalculator()
00038 {
00039 }
00040 void
00041 TimeMinMaxAvgTotalCalculator::DoDispose(void)
00042 {
00043 DataCalculator::DoDispose();
00044
00045 }
00046
00047 void
00048 TimeMinMaxAvgTotalCalculator::Update(const Time i)
00049 {
00050 if (m_enabled) {
00051 if (m_count) {
00052 m_total += i;
00053
00054 if (i < m_min)
00055 m_min = i;
00056
00057 if (i > m_max)
00058 m_max = i;
00059
00060 } else {
00061 m_min = i;
00062 m_max = i;
00063 m_total = i;
00064 }
00065 m_count++;
00066
00067 }
00068
00069 }
00070 void
00071 TimeMinMaxAvgTotalCalculator::Output(DataOutputCallback &callback) const
00072 {
00073 callback.OutputSingleton(m_key, "count", m_count);
00074 if (m_count > 0) {
00075 callback.OutputSingleton(m_key, "total", m_total);
00076 callback.OutputSingleton(m_key, "average", m_total/Scalar(m_count));
00077 callback.OutputSingleton(m_key, "max", m_max);
00078 callback.OutputSingleton(m_key, "min", m_min);
00079 }
00080
00081 }