From 3a655a5d1a968373cd0f58604962d930d7912737 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Sat, 4 Jul 2009 13:10:40 +0000 Subject: [PATCH] 2009-07-04 Tatsuhiro Tsujikawa Add formerly fastest PeerStat's sessionDownloadLength to new fastest PeerStat and use _fastestPeerStats to calcuate downloaded bytes in a session. * src/PeerStat.cc * src/SegmentMan.cc --- ChangeLog | 8 ++++++++ src/PeerStat.h | 5 +++++ src/SegmentMan.cc | 6 +++--- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index c433178d..a1c086c9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-07-04 Tatsuhiro Tsujikawa + + Add formerly fastest PeerStat's sessionDownloadLength to new + fastest PeerStat and use _fastestPeerStats to calcuate downloaded + bytes in a session. + * src/PeerStat.cc + * src/SegmentMan.cc + 2009-07-04 Tatsuhiro Tsujikawa If pipelining is enabled, we can always pool socket. diff --git a/src/PeerStat.h b/src/PeerStat.h index 77191656..f78294ec 100644 --- a/src/PeerStat.h +++ b/src/PeerStat.h @@ -188,6 +188,11 @@ public: { return _sessionUploadLength; } + + void addSessionDownloadLength(uint64_t length) + { + _sessionDownloadLength += length; + } }; typedef SharedHandle PeerStatHandle; diff --git a/src/SegmentMan.cc b/src/SegmentMan.cc index 0433868b..a34c66d4 100644 --- a/src/SegmentMan.cc +++ b/src/SegmentMan.cc @@ -314,6 +314,7 @@ void SegmentMan::updateFastestPeerStat(const SharedHandle& peerStat) if(i == _fastestPeerStats.end()) { _fastestPeerStats.push_back(peerStat); } else if((*i)->getAvgDownloadSpeed() < peerStat->getAvgDownloadSpeed()) { + peerStat->addSessionDownloadLength((*i)->getSessionDownloadLength()); *i = peerStat; } } @@ -362,9 +363,8 @@ public: uint64_t SegmentMan::calculateSessionDownloadLength() const { - return std::accumulate(peerStats.begin(), peerStats.end(), 0LL, - PeerStatDownloadLengthOperator()); - + return std::accumulate(_fastestPeerStats.begin(), _fastestPeerStats.end(), + 0LL, PeerStatDownloadLengthOperator()); } size_t SegmentMan::countFreePieceFrom(size_t index) const