/* */ #ifndef D_PEER_STAT_H #define D_PEER_STAT_H #include "common.h" #include #include "Command.h" #include "NetStat.h" namespace aria2 { class PeerStat { public: PeerStat(cuid_t cuid, const std::string& hostname, const ::std::string& protocol); PeerStat(cuid_t cuid = 0); ~PeerStat(); // Don't allow copying PeerStat(const PeerStat&); PeerStat& operator=(const PeerStat&); /** * Returns current download speed in byte per sec. */ int calculateDownloadSpeed(); int calculateAvgDownloadSpeed(); int calculateUploadSpeed(); int calculateAvgUploadSpeed(); void updateDownload(size_t bytes); void updateUpload(size_t bytes); int getMaxDownloadSpeed() const; int getMaxUploadSpeed() const; int getAvgDownloadSpeed() const; int getAvgUploadSpeed() const; void reset(); void downloadStart(); void downloadStop(); const Timer& getDownloadStartTime() const; NetStat::STATUS getStatus() const; uint64_t getSessionDownloadLength() const; uint64_t getSessionUploadLength() const; void addSessionDownloadLength(uint64_t length); TransferStat toTransferStat(); cuid_t getCuid() const { return cuid_; } const std::string& getHostname() const { return hostname_; } const std::string& getProtocol() const { return protocol_; } private: cuid_t cuid_; std::string hostname_; std::string protocol_; NetStat netStat_; }; } // namespace aria2 #endif // D_PEER_STAT_H