Quellcode durchsuchen

2009-05-07 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>

	Don't retrieve PREF_MAX_DOWNLOAD_LIMIT and PREF_MAX_UPLOAD_LIMIT
	from option directly. Instead, get them from RequestGroup.
	* src/ActivePeerConnectionCommand.cc
	* src/ActivePeerConnectionCommand.h
	* src/PeerReceiveHandshakeCommand.cc
	* src/RequestGroup.h
Tatsuhiro Tsujikawa vor 16 Jahren
Ursprung
Commit
40d5c1e763

+ 9 - 0
ChangeLog

@@ -1,3 +1,12 @@
+2009-05-07  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	Don't retrieve PREF_MAX_DOWNLOAD_LIMIT and PREF_MAX_UPLOAD_LIMIT
+	from option directly. Instead, get them from RequestGroup.
+	* src/ActivePeerConnectionCommand.cc
+	* src/ActivePeerConnectionCommand.h
+	* src/PeerReceiveHandshakeCommand.cc
+	* src/RequestGroup.h
+
 2009-05-07  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Removed unused uploadLimitCheck and uploadLimit from

+ 9 - 8
src/ActivePeerConnectionCommand.cc

@@ -64,13 +64,8 @@ ActivePeerConnectionCommand::ActivePeerConnectionCommand
   interval(interval),
   e(e),
   _thresholdSpeed(e->option->getAsInt(PREF_BT_REQUEST_PEER_SPEED_LIMIT)),
-  _maxUploadSpeedLimit(e->option->getAsInt(PREF_MAX_UPLOAD_LIMIT)),
   _numNewConnection(5)
 {
-  unsigned int maxDownloadSpeed = e->option->getAsInt(PREF_MAX_DOWNLOAD_LIMIT);
-  if(maxDownloadSpeed > 0) {
-    _thresholdSpeed = std::min(maxDownloadSpeed, _thresholdSpeed);
-  }
   _requestGroup->increaseNumCommand();
 }
 
@@ -86,13 +81,19 @@ bool ActivePeerConnectionCommand::execute() {
   if(checkPoint.elapsed(interval)) {
     checkPoint.reset();
     TransferStat tstat = _requestGroup->calculateStat();
+    const unsigned int maxDownloadLimit =
+      _requestGroup->getMaxDownloadSpeedLimit();
+    const unsigned int maxUploadLimit = _requestGroup->getMaxUploadSpeedLimit();
+    unsigned int thresholdSpeed = _thresholdSpeed;
+    if(maxDownloadLimit > 0) {
+      thresholdSpeed = std::min(maxDownloadLimit, _thresholdSpeed);
+    }
     if(// for seeder state
        (_pieceStorage->downloadFinished() && _btRuntime->lessThanMaxPeers() &&
-	(_maxUploadSpeedLimit == 0 ||
-	 tstat.getUploadSpeed() < _maxUploadSpeedLimit*0.8)) ||
+	(maxUploadLimit == 0 || tstat.getUploadSpeed() < maxUploadLimit*0.8)) ||
        // for leecher state
        (!_pieceStorage->downloadFinished() &&
-	(tstat.getDownloadSpeed() < _thresholdSpeed ||
+	(tstat.getDownloadSpeed() < thresholdSpeed ||
 	 _btRuntime->lessThanMinPeers()))) {
 
       unsigned int numConnection = 0;

+ 0 - 1
src/ActivePeerConnectionCommand.h

@@ -63,7 +63,6 @@ private:
   DownloadEngine* e;
   Time checkPoint;
   unsigned int _thresholdSpeed; // UNIT: byte/sec
-  unsigned int _maxUploadSpeedLimit;
   unsigned int _numNewConnection; // the number of the connection to establish.
 public:
   ActivePeerConnectionCommand(int cuid,

+ 8 - 5
src/PeerReceiveHandshakeCommand.cc

@@ -73,10 +73,6 @@ PeerReceiveHandshakeCommand::PeerReceiveHandshakeCommand
   if(_peerConnection.isNull()) {
     _peerConnection.reset(new PeerConnection(cuid, socket, e->option));
   }
-  unsigned int maxDownloadSpeed = e->option->getAsInt(PREF_MAX_DOWNLOAD_LIMIT);
-  if(maxDownloadSpeed > 0) {
-    _thresholdSpeed = std::min(maxDownloadSpeed, _thresholdSpeed);
-  }
 }
 
 PeerReceiveHandshakeCommand::~PeerReceiveHandshakeCommand() {}
@@ -111,8 +107,15 @@ bool PeerReceiveHandshakeCommand::executeInternal()
 	(StringFormat("Unknown info hash %s", infoHash.c_str()).str());
     }
     TransferStat tstat = btContext->getOwnerRequestGroup()->calculateStat();
+    const unsigned int maxDownloadLimit =
+      btContext->getOwnerRequestGroup()->getMaxDownloadSpeedLimit();
+    unsigned int thresholdSpeed = _thresholdSpeed;
+    if(maxDownloadLimit > 0) {
+      thresholdSpeed = std::min(maxDownloadLimit, _thresholdSpeed);
+    }
+
     if((!pieceStorage->downloadFinished() &&
-       tstat.getDownloadSpeed() < _thresholdSpeed) ||
+	tstat.getDownloadSpeed() < thresholdSpeed) ||
        btRuntime->lessThanMaxPeers()) {
       if(peerStorage->addPeer(peer)) {
 

+ 10 - 0
src/RequestGroup.h

@@ -458,6 +458,16 @@ public:
   // _maxUploadSpeedLimit. Always returns false if
   // _maxUploadSpeedLimit == 0. Otherwise returns false.
   bool doesUploadSpeedExceed();
+
+  unsigned int getMaxDownloadSpeedLimit() const
+  {
+    return _maxDownloadSpeedLimit;
+  }
+
+  unsigned int getMaxUploadSpeedLimit() const
+  {
+    return _maxUploadSpeedLimit;
+  }
 };
 
 typedef SharedHandle<RequestGroup> RequestGroupHandle;