mirror of https://github.com/aria2/aria2
2008-02-09 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Use PREF_MAX_DOWNLOAD_LIMIT as a threshold for ActivePeerConnectionCommand when it is given and PREF_MAX_DOWNLOAD_LIMIT < default threshold. * src/ActivePeerConnectionCommand.{h, cc} * src/BtSetup.ccpull/1/head
parent
f38eb15ca9
commit
7fdbd0e104
|
@ -50,13 +50,14 @@ ActivePeerConnectionCommand::ActivePeerConnectionCommand(int cuid,
|
|||
RequestGroup* requestGroup,
|
||||
DownloadEngine* e,
|
||||
const BtContextHandle& btContext,
|
||||
int32_t interval)
|
||||
int32_t interval,
|
||||
int32_t thresholdSpeed)
|
||||
:Command(cuid),
|
||||
BtContextAwareCommand(btContext),
|
||||
RequestGroupAware(requestGroup),
|
||||
interval(interval),
|
||||
e(e),
|
||||
_lowestSpeedLimit(50*1024),
|
||||
_thresholdSpeed(thresholdSpeed),
|
||||
_numNewConnection(5)
|
||||
{}
|
||||
|
||||
|
@ -70,7 +71,7 @@ bool ActivePeerConnectionCommand::execute() {
|
|||
checkPoint.reset();
|
||||
TransferStat tstat = peerStorage->calculateStat();
|
||||
size_t numAdd = btRuntime->lessThanEqMinPeer() ? MIN_PEERS-btRuntime->getConnections():_numNewConnection;
|
||||
if(tstat.getDownloadSpeed() < _lowestSpeedLimit || btRuntime->lessThanEqMinPeer()) {
|
||||
if(tstat.getDownloadSpeed() < _thresholdSpeed || btRuntime->lessThanEqMinPeer()) {
|
||||
for(; numAdd > 0 && peerStorage->isPeerAvailable(); --numAdd) {
|
||||
PeerHandle peer = peerStorage->getUnusedPeer();
|
||||
connectToPeer(peer);
|
||||
|
|
|
@ -53,14 +53,15 @@ private:
|
|||
int32_t interval; // UNIT: sec
|
||||
DownloadEngine* e;
|
||||
Time checkPoint;
|
||||
int32_t _lowestSpeedLimit; // UNIT: byte/sec
|
||||
int32_t _thresholdSpeed; // UNIT: byte/sec
|
||||
int32_t _numNewConnection; // the number of the connection to establish.
|
||||
public:
|
||||
ActivePeerConnectionCommand(int cuid,
|
||||
RequestGroup* requestGroup,
|
||||
DownloadEngine* e,
|
||||
const SharedHandle<BtContext>& btContext,
|
||||
int32_t interval);
|
||||
int32_t interval,
|
||||
int32_t thresholdSpeed);
|
||||
|
||||
virtual ~ActivePeerConnectionCommand();
|
||||
|
||||
|
@ -68,9 +69,9 @@ public:
|
|||
|
||||
void connectToPeer(const SharedHandle<Peer>& peer);
|
||||
|
||||
void setLowestSpeedLimit(int32_t speed)
|
||||
void setThresholdSpeed(int32_t speed)
|
||||
{
|
||||
_lowestSpeedLimit = speed;
|
||||
_thresholdSpeed = speed;
|
||||
}
|
||||
|
||||
void setNumNewConnection(int32_t numNewConnection)
|
||||
|
|
|
@ -80,11 +80,16 @@ Commands BtSetup::setup(RequestGroup* requestGroup,
|
|||
e,
|
||||
btContext,
|
||||
10));
|
||||
commands.push_back(new ActivePeerConnectionCommand(CUIDCounterSingletonHolder::instance()->newID(),
|
||||
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));
|
||||
}
|
||||
if(!btContext->isPrivate() && DHTSetup::initialized()) {
|
||||
DHTRegistry::_peerAnnounceStorage->addPeerAnnounce(btContext);
|
||||
DHTGetPeersCommand* command = new DHTGetPeersCommand(CUIDCounterSingletonHolder::instance()->newID(),
|
||||
|
|
Loading…
Reference in New Issue