summaryrefslogtreecommitdiff
path: root/src/DefaultBtRequestFactory.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-06-17 11:43:29 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-06-17 11:43:29 +0000
commitdfe2f993454bea38614bf1ad70d12a7bec947e69 (patch)
treed9ade0f4c9a3a25ba478d92d4a7f20c55fc3a268 /src/DefaultBtRequestFactory.cc
parent09502fc3db5462a2a0ae096dc0d3985ca9a190b5 (diff)
2008-06-17 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Filled up pieces based on the number of missing blocks, rather than simplay the number of piece * block length. * src/BtRequestFactory.h * src/DefaultBtInteractive.cc * src/DefaultBtInteractive.h * src/DefaultBtRequestFactory.cc * src/DefaultBtRequestFactory.h * src/Piece.cc * src/Piece.h * test/BitfieldManTest.cc * test/DefaultBtRequestFactoryTest.cc * test/MockBtRequestFactory.h
Diffstat (limited to 'src/DefaultBtRequestFactory.cc')
-rw-r--r--src/DefaultBtRequestFactory.cc24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/DefaultBtRequestFactory.cc b/src/DefaultBtRequestFactory.cc
index 3f52642a..616367b4 100644
--- a/src/DefaultBtRequestFactory.cc
+++ b/src/DefaultBtRequestFactory.cc
@@ -186,6 +186,30 @@ void DefaultBtRequestFactory::createRequestMessagesOnEndGame
}
}
+class CountMissingBlock
+{
+private:
+ size_t _numMissingBlock;
+public:
+ CountMissingBlock():_numMissingBlock(0) {}
+
+ size_t getNumMissingBlock()
+ {
+ return _numMissingBlock;
+ }
+
+ void operator()(const SharedHandle<Piece>& piece)
+ {
+ _numMissingBlock += piece->countMissingBlock();
+ }
+};
+
+size_t DefaultBtRequestFactory::countMissingBlock()
+{
+ return std::for_each(pieces.begin(), pieces.end(),
+ CountMissingBlock()).getNumMissingBlock();
+}
+
std::deque<SharedHandle<Piece> >& DefaultBtRequestFactory::getTargetPieces()
{
return pieces;