Files
Work/socket/TIMEINFO.HPP
2024-08-07 09:16:27 -04:00

80 lines
1.6 KiB
C++

#ifndef _SOCKET_TIMEINFO_HPP_
#define _SOCKET_TIMEINFO_HPP_
#include <stdio.h>
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif
#ifndef _COMMON_STRING_HPP_
#include <common/string.hpp>
#endif
class TimeInfo
{
public:
TimeInfo(void);
TimeInfo(const TimeInfo &timeInfo);
virtual ~TimeInfo();
TimeInfo &operator=(const TimeInfo &someTimeInfo);
void startTime(void);
void endTime(DWORD byteCount);
operator String(void)const;
private:
double mSecondsElapsed;
double mBytesPerSecond;
DWORD mBytesReceived;
};
inline
TimeInfo::TimeInfo(void)
: mSecondsElapsed(0.00), mBytesPerSecond(0.00), mBytesReceived(0)
{
}
inline
TimeInfo::TimeInfo(const TimeInfo &someTimeInfo)
{
*this=someTimeInfo;
}
inline
TimeInfo::~TimeInfo()
{
}
inline
TimeInfo &TimeInfo::operator=(const TimeInfo &someTimeInfo)
{
mSecondsElapsed=someTimeInfo.mSecondsElapsed;
mBytesPerSecond=someTimeInfo.mBytesPerSecond;
mBytesReceived=someTimeInfo.mBytesReceived;
return *this;
}
inline
void TimeInfo::startTime(void)
{
mSecondsElapsed=(double)::GetTickCount();
mBytesPerSecond=0;
mBytesReceived=0;
}
inline
void TimeInfo::endTime(DWORD byteCount)
{
mBytesReceived=byteCount;
mSecondsElapsed=(double)::GetTickCount()-mSecondsElapsed;
mSecondsElapsed/=1000.00;
if(0.00==mSecondsElapsed)mBytesPerSecond=byteCount;
else mBytesPerSecond=(1.00/mSecondsElapsed)*(double)byteCount;
}
inline
TimeInfo::operator String(void)const
{
String stringValue;
::sprintf(stringValue,"%ld bytes transferred in %lf seconds. (%lf KBS)",mBytesReceived,mSecondsElapsed,mBytesPerSecond/1000.00);
return stringValue;
}
#endif