summaryrefslogtreecommitdiff
path: root/src/DefaultBtInteractive.h
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2007-12-22 03:57:55 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2007-12-22 03:57:55 +0000
commit286f34cb3f350c9884a96d5ea3e20e2a3bbf0c37 (patch)
treec33aebf51947efaa5713b2dae00464e86e391442 /src/DefaultBtInteractive.h
parentc25f4cffc0fec4fcf657aff0c204baaac0bbe6f7 (diff)
2007-12-22 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Added uTorrent compatible Peer Exchange. * src/BencodeVisitor.{h, cc} * test/BencodeVisitorTest.cc * src/BtConstants.h * src/BtContext.h: Added 'private' flag. * src/BtExtendedMessage.{h, cc} * test/BtExtendedMessageTest.cc * src/BtHandshakeMessage.{h, cc}: Set extended messaging bit in reserved field. * test/BtHandshakeMessageTest.cc * src/BtMessageFactory.h * src/BtRegistry.h * src/BtRuntime.h: This class holds default extension message IDs for aria2. By default, aria2 uses ID 8 for ut_pex. * src/DefaultBtContext.cc * src/DefaultBtInteractive.{h, cc}: This class holds _utPexEnabled. When it is true, aria2 enables ut_pex. This value is set by PeerInteractionCommand. * src/DefaultBtMessageFactory.{h, cc} * test/DefaultBtMessageFactoryTest.cc * src/DefaultBtMessageReceiver.cc: Moved the code of fast extension handling to DefaultBtInteractive class. * src/DefaultExtensionMessageFactory.{h, cc} * test/DefaultExtensionMessageFactoryTest.cc * src/DefaultPeerStorage.cc: Returns false if a peer is already in the container(peers and incomingPeers. The equality is determined by Peer::id). * test/DefaultPeerStorageTest.cc * src/ExtensionMessage.h * test/MockExtensionMessage.h * src/ExtensionMessageFactory.h * test/MockExtensionMessageFactory.h * src/HandshakeExtensionMessage.{h, cc} * test/HandshakeExtensionMessageTest.cc * src/MetaEntry.h * src/Peer.{h, cc} * src/PeerInteractionCommand.cc * src/PeerReceiveHandshakeCommand.cc: Evaluate the return value of addIncomingPeer. * src/PeerMessageUtil.{h, cc} * src/PeerObject.h * src/UTPexExtensionMessage.{h, cc} * test/UTPexExtensionMessageTest.cc * src/message.h * src/prefs.h Fixed the bug that returns incomplete data when it contains null character. A convenient constructor was also added. * src/Data.{h, cc} Rewritten. * src/CompactPeerListProcessor.cc Fixed typos. * src/message.h * src/MetaFileUtil.cc
Diffstat (limited to 'src/DefaultBtInteractive.h')
-rw-r--r--src/DefaultBtInteractive.h12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/DefaultBtInteractive.h b/src/DefaultBtInteractive.h
index fa546f70..c0c70077 100644
--- a/src/DefaultBtInteractive.h
+++ b/src/DefaultBtInteractive.h
@@ -102,13 +102,16 @@ private:
Time floodingCheckPoint;
FloodingStat floodingStat;
Time inactiveCheckPoint;
+ Time _pexCheckPoint;
int32_t keepAliveInterval;
int32_t maxDownloadSpeedLimit;
+ bool _utPexEnabled;
static const int32_t FLOODING_CHECK_INTERVAL = 5;
void addBitfieldMessageToQueue();
void addAllowedFastMessageToQueue();
+ void addHandshakeExtendedMessageToQueue();
void decideChoking();
void checkHave();
void sendKeepAlive();
@@ -117,6 +120,7 @@ private:
void addRequests();
void detectMessageFlooding();
void checkActiveInteraction();
+ void addPeerExchangeMessage();
public:
DefaultBtInteractive():peer(0),
@@ -131,7 +135,8 @@ public:
logger(LogFactory::getInstance()),
allowedFastSetSize(10),
keepAliveInterval(120),
- maxDownloadSpeedLimit(0)
+ maxDownloadSpeedLimit(0),
+ _utPexEnabled(false)
{}
virtual ~DefaultBtInteractive() {}
@@ -202,6 +207,11 @@ public:
void setBtMessageFactory(const BtMessageFactoryWeakHandle& factory) {
this->messageFactory = factory;
}
+
+ void setUTPexEnabled(bool f)
+ {
+ _utPexEnabled = f;
+ }
};
typedef SharedHandle<DefaultBtInteractive> DefaultBtInteractiveHandle;