#define SECOND long
#define MILLISECOND long
#define kHistoryEntries 10
#define kInitialWait 30
class TCountDownClock
{
public: // public member functions
TCountDownClock(long lBytesToTransfer);
SECOND TimeRemaining(long lBytesTransfered);
void Start(void);
protected: // protected member functions
void StoreTransferRate(float fTransferRate);
float CalculateTransferRate(float fOverallAvg);
float WeighRecentRates(void);
protected: // protected data members
long m_lIntervalCount;
MILLISECOND m_msStartTime;
MILLISECOND m_msLastTime;
long m_lBytesToTransfer;
long m_lLastBytes;
int m_nRatesStored;
float m_fTransRateHistory[kHistoryEntries];
};
// ---------------------------------------