diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-05-11 01:22:32 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-05-11 01:22:32 +0000 |
| commit | a702d6066648e95928bf4f23487ea4cd6f931f14 (patch) | |
| tree | 8458bcc3071af63f44e6ea19d8d86a7651ae9159 /src/BitfieldMan.cc | |
| parent | f69625775cf17a47954e58115337ae2b80db4d45 (diff) | |
2008-05-11 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Implemented rarest piece first piece selection strategy.
* src/AbstractBtMessage.cc
* src/AbstractBtMessage.h
* src/BitfieldMan.cc
* src/BitfieldMan.h
* src/BtBitfieldMessage.cc
* src/BtHaveAllMessage.cc
* src/BtHaveMessage.cc
* src/DefaultPieceStorage.cc
* src/DefaultPieceStorage.h
* src/PeerInteractionCommand.cc
* src/PieceStorage.h
* src/UnknownLengthPieceStorage.h
Diffstat (limited to 'src/BitfieldMan.cc')
| -rw-r--r-- | src/BitfieldMan.cc | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/BitfieldMan.cc b/src/BitfieldMan.cc index 42cc871e..d89deb29 100644 --- a/src/BitfieldMan.cc +++ b/src/BitfieldMan.cc @@ -424,6 +424,19 @@ std::deque<size_t> BitfieldMan::getAllMissingIndexes(const unsigned char* peerBi return getAllMissingIndexes(bf, bitfieldLength); } +std::deque<size_t> BitfieldMan::getAllMissingUnusedIndexes(const unsigned char* peerBitfield, size_t peerBitfieldLength) const { + if(bitfieldLength != peerBitfieldLength) { + return std::deque<size_t>(); + } + array_fun<unsigned char> bf = array_and(array_and(array_negate(bitfield), + array_negate(useBitfield)), + peerBitfield); + if(filterEnabled) { + bf = array_and(bf, filterBitfield); + } + return getAllMissingIndexes(bf, bitfieldLength); +} + size_t BitfieldMan::countMissingBlock() const { return cachedNumMissingBlock; } |
