summaryrefslogtreecommitdiff
path: root/src/Piece.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-02-10 15:07:06 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-02-10 15:07:06 +0000
commitccc552cec90b9e71ca36db763fe2ea95bb2dd2ca (patch)
treed1ed3197a5f21abc6eaa644d6dc0ffcef2faf5dd /src/Piece.cc
parent762580ba8cbcb14734d42b9e8f6a1c16220319f2 (diff)
2010-02-11 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added BitfieldMan::getFirstNMissingUnusedIndex() to get multiple unused block indexes at once instead of calling getFirstMissingUnusedIndex() multiple times. Made use of it in Piece class and DefaultBtRequestFactory class via Piece class. * src/BitfieldMan.cc * src/BitfieldMan.h * src/DefaultBtRequestFactory.cc * src/Piece.cc * src/Piece.h * test/BitfieldManTest.cc
Diffstat (limited to 'src/Piece.cc')
-rw-r--r--src/Piece.cc10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/Piece.cc b/src/Piece.cc
index 26f50fe2..2d5a689b 100644
--- a/src/Piece.cc
+++ b/src/Piece.cc
@@ -173,10 +173,14 @@ bool Piece::getMissingUnusedBlockIndex(size_t& index) const
}
}
-bool Piece::getMissingBlockIndex(size_t& index) const
+bool Piece::getMissingUnusedBlockIndex
+(std::vector<size_t>& indexes, size_t n) const
{
- if(bitfield->getMissingIndex(index)) {
- bitfield->setUseBit(index);
+ if(bitfield->getFirstNMissingUnusedIndex(indexes, n)) {
+ for(std::vector<size_t>::const_iterator i = indexes.begin();
+ i != indexes.end(); ++i) {
+ bitfield->setUseBit(*i);
+ }
return true;
} else {
return false;