46 lines
972 B
C++
46 lines
972 B
C++
|
#include "rate.h"
|
||
|
|
||
|
void Rate::StartTimer()
|
||
|
{
|
||
|
if( !m_last_timestamp ) time(&m_last_timestamp);
|
||
|
}
|
||
|
|
||
|
void Rate::StopTimer()
|
||
|
{
|
||
|
if( !m_last_timestamp ){
|
||
|
m_total_timeused += (time((time_t*) 0) - m_last_timestamp);
|
||
|
m_last_timestamp = 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void Rate::CountAdd(size_t nbytes)
|
||
|
{
|
||
|
m_count_bytes += nbytes;
|
||
|
}
|
||
|
|
||
|
void Rate::operator=(const Rate &ra)
|
||
|
{
|
||
|
m_last_timestamp = time((time_t*) 0);
|
||
|
m_count_bytes = ra.m_count_bytes;
|
||
|
}
|
||
|
|
||
|
size_t Rate::RateMeasure() const
|
||
|
{
|
||
|
time_t timeused = m_total_timeused;
|
||
|
if( m_last_timestamp ) timeused += (time((time_t*) 0) - m_last_timestamp);
|
||
|
if( timeused < 1 ) timeused = 1;
|
||
|
return (size_t)(m_count_bytes / timeused);
|
||
|
}
|
||
|
|
||
|
size_t Rate::RateMeasure(const Rate &ra_to) const
|
||
|
{
|
||
|
time_t timeused = time((time_t*) 0) - m_last_timestamp;
|
||
|
if( timeused < 1 ) timeused = 1;
|
||
|
return (size_t)((ra_to.m_count_bytes - m_count_bytes) / timeused);
|
||
|
}
|
||
|
|
||
|
time_t Rate::TimeUsed(const time_t *pnow) const
|
||
|
{
|
||
|
return (*pnow - m_last_timestamp);
|
||
|
}
|