mirror of https://github.com/aria2/aria2
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.hpull/1/head
parent
22ab845df5
commit
40d5c1e763
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)) {
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue