Tidy up LoadMonitor stats API

This commit is contained in:
Vinnie Falco
2013-11-09 12:08:23 -08:00
parent b5f8d447a0
commit dd74c19858
3 changed files with 53 additions and 23 deletions

View File

@@ -17,6 +17,26 @@
*/
//==============================================================================
/*
TODO
----
- Use Journal for logging
*/
//------------------------------------------------------------------------------
LoadMonitor::Stats::Stats()
: count (0)
, latencyAvg (0)
, latencyPeak (0)
, isOverloaded (false)
{
}
//------------------------------------------------------------------------------
SETUP_LOG (LoadMonitor)
@@ -171,26 +191,28 @@ bool LoadMonitor::isOver ()
return isOverTarget (mLatencyMSAvg / (mLatencyEvents * 4), mLatencyMSPeak / (mLatencyEvents * 4));
}
void LoadMonitor::getCountAndLatency (uint64& count, uint64& latencyAvg, uint64& latencyPeak, bool& isOver)
LoadMonitor::Stats LoadMonitor::getStats ()
{
Stats stats;
ScopedLockType sl (mLock, __FILE__, __LINE__);
update ();
count = mCounts / 4;
stats.count = mCounts / 4;
if (mLatencyEvents == 0)
{
latencyAvg = 0;
latencyPeak = 0;
stats.latencyAvg = 0;
stats.latencyPeak = 0;
}
else
{
latencyAvg = mLatencyMSAvg / (mLatencyEvents * 4);
latencyPeak = mLatencyMSPeak / (mLatencyEvents * 4);
stats.latencyAvg = mLatencyMSAvg / (mLatencyEvents * 4);
stats.latencyPeak = mLatencyMSPeak / (mLatencyEvents * 4);
}
isOver = isOverTarget (latencyAvg, latencyPeak);
}
stats.isOverloaded = isOverTarget (stats.latencyAvg, stats.latencyPeak);
// vim:ts=4
return stats;
}