diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-05-07 08:40:45 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2009-05-07 08:40:45 +0000 |
| commit | 40d5c1e763206bfe1d2e4aa9508ec8b3f4e66641 (patch) | |
| tree | feefd0c0a33f9c9a781c51d392f1727488081966 /src | |
| parent | 22ab845df55f950a82adab8934a516005747a868 (diff) | |
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
Diffstat (limited to 'src')
| -rw-r--r-- | src/ActivePeerConnectionCommand.cc | 17 | ||||
| -rw-r--r-- | src/ActivePeerConnectionCommand.h | 1 | ||||
| -rw-r--r-- | src/PeerReceiveHandshakeCommand.cc | 13 | ||||
| -rw-r--r-- | src/RequestGroup.h | 10 |
4 files changed, 27 insertions, 14 deletions
diff --git a/src/ActivePeerConnectionCommand.cc b/src/ActivePeerConnectionCommand.cc index 79405c87..828488e0 100644 --- a/src/ActivePeerConnectionCommand.cc +++ b/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; diff --git a/src/ActivePeerConnectionCommand.h b/src/ActivePeerConnectionCommand.h index aae2e5dc..f99f07ce 100644 --- a/src/ActivePeerConnectionCommand.h +++ b/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, diff --git a/src/PeerReceiveHandshakeCommand.cc b/src/PeerReceiveHandshakeCommand.cc index ad89c13f..e5bf415a 100644 --- a/src/PeerReceiveHandshakeCommand.cc +++ b/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)) { diff --git a/src/RequestGroup.h b/src/RequestGroup.h index e51b224d..c3e678b8 100644 --- a/src/RequestGroup.h +++ b/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; |
