summaryrefslogtreecommitdiff
path: root/src/DefaultPieceStorage.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/DefaultPieceStorage.cc')
-rw-r--r--src/DefaultPieceStorage.cc25
1 files changed, 20 insertions, 5 deletions
diff --git a/src/DefaultPieceStorage.cc b/src/DefaultPieceStorage.cc
index f1f13f2f..929359d3 100644
--- a/src/DefaultPieceStorage.cc
+++ b/src/DefaultPieceStorage.cc
@@ -537,14 +537,29 @@ int64_t DefaultPieceStorage::getCompletedLength()
int64_t DefaultPieceStorage::getFilteredCompletedLength()
{
return bitfieldMan_->getFilteredCompletedLength()+
- getInFlightPieceCompletedLength();
+ getInFlightPieceFilteredCompletedLength();
}
-size_t DefaultPieceStorage::getInFlightPieceCompletedLength() const
+int64_t DefaultPieceStorage::getInFlightPieceCompletedLength() const
{
- return std::accumulate(usedPieces_.begin(), usedPieces_.end(),
- 0, adopt2nd(std::plus<size_t>(),
- mem_fun_sh(&Piece::getCompletedLength)));
+ int64_t len = 0;
+ for(UsedPieceSet::const_iterator i = usedPieces_.begin(),
+ eoi = usedPieces_.end(); i != eoi; ++i) {
+ len += (*i)->getCompletedLength();
+ }
+ return len;
+}
+
+int64_t DefaultPieceStorage::getInFlightPieceFilteredCompletedLength() const
+{
+ int64_t len = 0;
+ for(UsedPieceSet::const_iterator i = usedPieces_.begin(),
+ eoi = usedPieces_.end(); i != eoi; ++i) {
+ if(bitfieldMan_->isFilterBitSet((*i)->getIndex())) {
+ len += (*i)->getCompletedLength();
+ }
+ }
+ return len;
}
// not unittested