/* */ #ifndef D_NET_STAT_H #define D_NET_STAT_H #include "common.h" #include "SpeedCalc.h" #include "TransferStat.h" namespace aria2 { class NetStat { public: enum STATUS { IDLE, ACTIVE, }; NetStat(); ~NetStat(); // Don't allow copying NetStat(const NetStat&); NetStat& operator=(const NetStat&); /** * Returns current download speed in byte per sec. */ int calculateDownloadSpeed(); int calculateNewestDownloadSpeed(int seconds); int calculateAvgDownloadSpeed(); int calculateUploadSpeed(); int calculateNewestUploadSpeed(int seconds); int calculateAvgUploadSpeed(); void updateDownload(size_t bytes); void updateUpload(size_t bytes); void updateUploadSpeed(size_t bytes); void updateUploadLength(size_t bytes); int getMaxDownloadSpeed() const; int getMaxUploadSpeed() const; int getAvgDownloadSpeed() const { return avgDownloadSpeed_; } int getAvgUploadSpeed() const { return avgUploadSpeed_; } void reset(); void downloadStart(); void downloadStop(); const Timer& getDownloadStartTime() const { return downloadStartTime_; } STATUS getStatus() const { return status_; } uint64_t getSessionDownloadLength() const { return sessionDownloadLength_; } uint64_t getSessionUploadLength() const { return sessionUploadLength_; } void addSessionDownloadLength(uint64_t length) { sessionDownloadLength_ += length; } TransferStat toTransferStat(); private: SpeedCalc downloadSpeed_; SpeedCalc uploadSpeed_; Timer downloadStartTime_; STATUS status_; int avgDownloadSpeed_; int avgUploadSpeed_; int64_t sessionDownloadLength_; int64_t sessionUploadLength_; }; } // namespace aria2 #endif // D_NET_STAT_H