#ifndef _SOCKET_TIMEINFO_HPP_ #define _SOCKET_TIMEINFO_HPP_ #include #ifndef _COMMON_WINDOWS_HPP_ #include #endif #ifndef _COMMON_STRING_HPP_ #include #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