summaryrefslogtreecommitdiff
path: root/src/BitfieldMan.h
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2006-12-24 06:25:21 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2006-12-24 06:25:21 +0000
commit9c3e8fbd9c92cc858c2b0f805714e19ce97b7983 (patch)
tree2f53afd601fbe1fff339f17cef5ef37186a1960a /src/BitfieldMan.h
parent458cc274628f226b3130240d15a1ae8e562d31b2 (diff)
2006-12-24 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Rewritten a portion of bittorrent implementation: * src/BtMessageValidator.h: New class. * src/BtBitfieldMessageValidator.h: New class. * src/BtHandshakeMessageValidator.h: New class. * src/BtRequestMessageValidator.h: New class. * src/BtSuggestPieceMessageValidator.h: New class. * src/BtAllowedFastMessageValidator.h: New class. * src/BtRejectMessageValidator.h: New class. * src/BtCancelMessageValidator.h: New class. * src/BtPieceMessageValidator.h: New class. * src/BtHaveMessageValidator.h: New class. * src/BtEventListener.h: New class. * src/AbstractBtEventListener.h: New class. * src/BtEvent.h: New class. * src/BtChokingEvent.h: New class. * src/BtChokedEvent.h: New class. * src/BtCancelSendingPieceEvent.h: New class. * src/BtAbortOutstandingRequestEvent.h: New class. * src/Randomizer.h: New class. * src/SimpleRandomizer.h: New class. * src/BtMessage.h: New class. * src/AbstractBtMessage.h: New class. * src/SimpleBtMessage.h: New class. * src/BtHaveMessage.h: New class. * src/BtInterestedMessage.h: New class. * src/BtAllowedFastMessage.h: New class. * src/BtUnchokeMessage.h: New class. * src/BtCancelMessage.h: New class. * src/BtNotInterestedMessage.h: New class. * src/BtChokeMessage.h: New class. * src/BtHaveNoneMessage.h: New class. * src/BtHandshakeMessage.h: New class. * src/BtSuggestPieceMessage.h: New class. * src/BtHaveMessage.h: New class. * src/BtPieceMessage.h: New class. * src/BtHaveAllMessage.h: New class. * src/BtKeepAliveMessage.h: New class. * src/BtPortMessage.h: New class. * src/BtRejectMessage.h: New class. * src/BtBitfieldMessage.h: New class. * src/BtRequestMessage.h: New class. * src/DefaultBtRequestFactory.h: New class. * src/DefaultBtMessageReceiver.h: New class. * src/BtInteractive.h: New class. * src/BtMessageDispatcher.h: New class. * src/DefaultBtMessageDispatcher.h: New class. * src/DefaultBtInteractive.h: New class. * src/BitfieldManFactory.h: New class. * src/HandleRegistry.h: New class. * src/BtMessageFactory.h: New class. * src/BtMessageReceiver.h: New class. * src/DefaultBtMessageFactory.h: New class. * src/PeerObject.h: New class. * src/BtRequestFactory.h: New class.
Diffstat (limited to 'src/BitfieldMan.h')
-rw-r--r--src/BitfieldMan.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/BitfieldMan.h b/src/BitfieldMan.h
index 53758601..43fb81a1 100644
--- a/src/BitfieldMan.h
+++ b/src/BitfieldMan.h
@@ -36,6 +36,7 @@
#define _D_BITFIELD_MAN_H_
#include "common.h"
+#include "Randomizer.h"
#include <deque>
typedef deque<int> BlockIndexes;
@@ -50,6 +51,8 @@ private:
int bitfieldLength;
int blocks;
bool filterEnabled;
+ RandomizerHandle randomizer;
+
int countSetBit(const unsigned char* bitfield, int len) const;
int getNthBitIndex(const unsigned char bit, int nth) const;
int getMissingIndexRandomly(const unsigned char* bitfield, int len) const;
@@ -176,6 +179,8 @@ public:
*/
int countBlock() const;
+ int getMaxIndex() const { return blocks-1; }
+
void setBitfield(const unsigned char* bitfield, int bitfieldLength);
void clearAllBit();
@@ -202,6 +207,14 @@ public:
* affected by filter
*/
long long int getFilteredCompletedLength() const;
+
+ void setRandomizer(const RandomizerHandle& randomizer) {
+ this->randomizer = randomizer;
+ }
+
+ RandomizerHandle getRandomizer() const {
+ return randomizer;
+ }
};
#endif // _D_BITFIELD_MAN_H_