/* */ #include "PeerStat.h" #include "SharedHandle.h" #include "wallclock.h" namespace aria2 { PeerStat::PeerStat (cuid_t cuid, const std::string& hostname, const::std::string& protocol) : cuid_(cuid), hostname_(hostname), protocol_(protocol), downloadStartTime_(global::wallclock()), status_(PeerStat::IDLE), avgDownloadSpeed_(0), avgUploadSpeed_(0), sessionDownloadLength_(0), sessionUploadLength_(0) {} PeerStat::PeerStat(cuid_t cuid) : cuid_(cuid), status_(PeerStat::IDLE), avgDownloadSpeed_(0), avgUploadSpeed_(0), sessionDownloadLength_(0), sessionUploadLength_(0) {} PeerStat::~PeerStat() {} /** * Returns current download speed in byte per sec. */ unsigned int PeerStat::calculateDownloadSpeed() { return downloadSpeed_.calculateSpeed(); } unsigned int PeerStat::calculateAvgDownloadSpeed() { avgDownloadSpeed_ = downloadSpeed_.calculateAvgSpeed(); return avgDownloadSpeed_; } unsigned int PeerStat::calculateUploadSpeed() { return uploadSpeed_.calculateSpeed(); } unsigned int PeerStat::calculateAvgUploadSpeed() { avgUploadSpeed_ = uploadSpeed_.calculateAvgSpeed(); return avgUploadSpeed_; } void PeerStat::updateDownloadLength(size_t bytes) { downloadSpeed_.update(bytes); sessionDownloadLength_ += bytes; } void PeerStat::updateUploadLength(size_t bytes) { uploadSpeed_.update(bytes); sessionUploadLength_ += bytes; } unsigned int PeerStat::getMaxDownloadSpeed() const { return downloadSpeed_.getMaxSpeed(); } unsigned int PeerStat::getMaxUploadSpeed() const { return uploadSpeed_.getMaxSpeed(); } void PeerStat::reset() { downloadSpeed_.reset(); uploadSpeed_.reset(); downloadStartTime_ = global::wallclock(); status_ = PeerStat::IDLE; } void PeerStat::downloadStart() { reset(); status_ = PeerStat::ACTIVE; } void PeerStat::downloadStop() { calculateAvgDownloadSpeed(); calculateAvgUploadSpeed(); status_ = PeerStat::IDLE; } } // namespace aria2