Browse Source

2008-02-19 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>

	Determin _threadtholdSpeed in each constructor for
	ActivePeerConnectionCommand and PeerReceiveHandshakeCommand.
	* src/ActivePeerConnectionCommand.{h, cc}
	* src/PeerReceiveHandshakeCommand.{h, cc}
	* src/BtSetup.cc
	* src/BtConstants.h
Tatsuhiro Tsujikawa 17 years ago
parent
commit
3c41ea24bf

+ 9 - 0
ChangeLog

@@ -1,3 +1,12 @@
+2008-02-19  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
+
+	Determin _threadtholdSpeed in each constructor for
+	ActivePeerConnectionCommand and PeerReceiveHandshakeCommand.
+	* src/ActivePeerConnectionCommand.{h, cc}
+	* src/PeerReceiveHandshakeCommand.{h, cc}
+	* src/BtSetup.cc
+	* src/BtConstants.h
+
 2008-02-18  Tatsuhiro Tsujikawa  <tujikawa at rednoah dot com>
 
 	Added --bt-min-crypto-level and --bt-require-crypto options.

+ 11 - 4
src/ActivePeerConnectionCommand.cc

@@ -43,6 +43,9 @@
 #include "BtRuntime.h"
 #include "Peer.h"
 #include "Logger.h"
+#include "prefs.h"
+#include "Option.h"
+#include "BtConstants.h"
 
 namespace aria2 {
 
@@ -50,16 +53,20 @@ ActivePeerConnectionCommand::ActivePeerConnectionCommand(int cuid,
 							 RequestGroup* requestGroup,
 							 DownloadEngine* e,
 							 const BtContextHandle& btContext,
-							 int32_t interval,
-							 int32_t thresholdSpeed)
+							 int32_t interval)
   :Command(cuid),
    BtContextAwareCommand(btContext),
    RequestGroupAware(requestGroup),
    interval(interval),
    e(e),
-   _thresholdSpeed(thresholdSpeed),
+   _thresholdSpeed(SLOW_SPEED_THRESHOLD),
    _numNewConnection(5)
-{}
+{
+  int32_t maxDownloadSpeed = e->option->getAsInt(PREF_MAX_DOWNLOAD_LIMIT);
+  if(maxDownloadSpeed > 0) {
+    _thresholdSpeed = std::min(maxDownloadSpeed, _thresholdSpeed);
+  }
+}
 
 ActivePeerConnectionCommand::~ActivePeerConnectionCommand() {}
 

+ 1 - 2
src/ActivePeerConnectionCommand.h

@@ -60,8 +60,7 @@ public:
 			      RequestGroup* requestGroup,
 			      DownloadEngine* e,
 			      const SharedHandle<BtContext>& btContext,
-			      int32_t interval,
-			      int32_t thresholdSpeed);
+			      int32_t interval);
      
   virtual ~ActivePeerConnectionCommand();
 

+ 2 - 0
src/BtConstants.h

@@ -50,4 +50,6 @@ typedef std::map<std::string, uint8_t> Extensions;
 
 #define DEFAULT_LATENCY 1500
 
+#define SLOW_SPEED_THRESHOLD (50*1024)
+
 #endif // _D_BT_CONSTANTS_

+ 4 - 10
src/BtSetup.cc

@@ -80,16 +80,10 @@ Commands BtSetup::setup(RequestGroup* requestGroup,
 					  e,
 					  btContext,
 					  10));
-  {
-    int32_t thresholdSpeed = 50*1024;
-    int32_t maxDownloadSpeed = option->getAsInt(PREF_MAX_DOWNLOAD_LIMIT);
-    if(maxDownloadSpeed > 0) {
-      thresholdSpeed = std::min(maxDownloadSpeed, thresholdSpeed);
-    }
-    commands.push_back(new ActivePeerConnectionCommand(CUIDCounterSingletonHolder::instance()->newID(),
-						       requestGroup, e, btContext, 10,
-						       thresholdSpeed));
-  }
+
+  commands.push_back(new ActivePeerConnectionCommand(CUIDCounterSingletonHolder::instance()->newID(),
+						     requestGroup, e, btContext, 10));
+
   if(!btContext->isPrivate() && DHTSetup::initialized()) {
     DHTRegistry::_peerAnnounceStorage->addPeerAnnounce(btContext);
     DHTGetPeersCommand* command = new DHTGetPeersCommand(CUIDCounterSingletonHolder::instance()->newID(),

+ 9 - 2
src/PeerReceiveHandshakeCommand.cc

@@ -49,6 +49,8 @@
 #include "message.h"
 #include "Socket.h"
 #include "Logger.h"
+#include "prefs.h"
+#include "Option.h"
 
 namespace aria2 {
 
@@ -59,11 +61,15 @@ PeerReceiveHandshakeCommand::PeerReceiveHandshakeCommand(int32_t cuid,
 							 const SharedHandle<PeerConnection>& peerConnection):
   PeerAbstractCommand(cuid, peer, e, s),
   _peerConnection(peerConnection),
-  _lowestSpeedLimit(20*1024)
+  _thresholdSpeed(SLOW_SPEED_THRESHOLD)
 {
   if(_peerConnection.isNull()) {
     _peerConnection = new PeerConnection(cuid, socket, e->option);
   }
+  int32_t maxDownloadSpeed = e->option->getAsInt(PREF_MAX_DOWNLOAD_LIMIT);
+  if(maxDownloadSpeed > 0) {
+    _thresholdSpeed = std::min(maxDownloadSpeed, _thresholdSpeed);
+  }
 }
 
 PeerReceiveHandshakeCommand::~PeerReceiveHandshakeCommand() {}
@@ -89,7 +95,8 @@ bool PeerReceiveHandshakeCommand::executeInternal()
       throw new DlAbortEx("Unknown info hash %s", infoHash.c_str());
     }
     TransferStat tstat = PEER_STORAGE(btContext)->calculateStat();
-    if(!PIECE_STORAGE(btContext)->downloadFinished() && tstat.getDownloadSpeed() < _lowestSpeedLimit ||
+    if((!PIECE_STORAGE(btContext)->downloadFinished() &&
+       tstat.getDownloadSpeed() < _thresholdSpeed) ||
        BT_RUNTIME(btContext)->getConnections() < MAX_PEERS) {
       if(PEER_STORAGE(btContext)->addPeer(peer)) {
 

+ 1 - 1
src/PeerReceiveHandshakeCommand.h

@@ -48,7 +48,7 @@ class PeerReceiveHandshakeCommand:public PeerAbstractCommand
 private:
   SharedHandle<PeerConnection> _peerConnection;
 
-  int32_t _lowestSpeedLimit;
+  int32_t _thresholdSpeed;
 
 protected:
   virtual bool executeInternal();