Don't retry peer lookup.

We can handle shortage of peer by short interval.
pull/1/head
Tatsuhiro Tsujikawa 2011-02-08 23:39:44 +09:00
parent aa4232ca8b
commit ffce1848ca
2 changed files with 11 additions and 18 deletions

View File

@ -52,6 +52,16 @@
namespace aria2 { namespace aria2 {
namespace {
const time_t GET_PEER_INTERVAL = (15*60);
// Interval when the size of peer list is low.
const time_t GET_PEER_INTERVAL_LOW = (5*60);
// Interval when the peer list is empty.
const time_t GET_PEER_INTERVAL_ZERO = 60;
} // namespace
DHTGetPeersCommand::DHTGetPeersCommand DHTGetPeersCommand::DHTGetPeersCommand
(cuid_t cuid, (cuid_t cuid,
RequestGroup* requestGroup, RequestGroup* requestGroup,
@ -59,7 +69,6 @@ DHTGetPeersCommand::DHTGetPeersCommand
: Command(cuid), : Command(cuid),
requestGroup_(requestGroup), requestGroup_(requestGroup),
e_(e), e_(e),
numRetry_(0),
lastGetPeerTime_(0) lastGetPeerTime_(0)
{ {
requestGroup_->increaseNumCommand(); requestGroup_->increaseNumCommand();
@ -77,8 +86,7 @@ bool DHTGetPeersCommand::execute()
} }
time_t elapsed = lastGetPeerTime_.difference(global::wallclock); time_t elapsed = lastGetPeerTime_.difference(global::wallclock);
if(!task_ && if(!task_ &&
((numRetry_ > 0 && elapsed >= static_cast<time_t>(numRetry_*5)) || (elapsed >= GET_PEER_INTERVAL ||
elapsed >= GET_PEER_INTERVAL ||
(((btRuntime_->lessThanMinPeers() && elapsed >= GET_PEER_INTERVAL_LOW) || (((btRuntime_->lessThanMinPeers() && elapsed >= GET_PEER_INTERVAL_LOW) ||
(btRuntime_->getConnections() == 0 && (btRuntime_->getConnections() == 0 &&
elapsed >= GET_PEER_INTERVAL_ZERO)) elapsed >= GET_PEER_INTERVAL_ZERO))
@ -91,11 +99,6 @@ bool DHTGetPeersCommand::execute()
taskQueue_->addPeriodicTask2(task_); taskQueue_->addPeriodicTask2(task_);
} else if(task_ && task_->finished()) { } else if(task_ && task_->finished()) {
lastGetPeerTime_ = global::wallclock; lastGetPeerTime_ = global::wallclock;
if(numRetry_ < MAX_RETRIES && btRuntime_->lessThanMinPeers()) {
++numRetry_;
} else {
numRetry_ = 0;
}
task_.reset(); task_.reset();
} }

View File

@ -52,14 +52,6 @@ class PeerStorage;
class DHTGetPeersCommand:public Command { class DHTGetPeersCommand:public Command {
private: private:
static const time_t GET_PEER_INTERVAL = (15*60);
static const time_t GET_PEER_INTERVAL_LOW = (5*60);
static const time_t GET_PEER_INTERVAL_ZERO = 60;
static const size_t MAX_RETRIES = 10;
RequestGroup* requestGroup_; RequestGroup* requestGroup_;
SharedHandle<BtRuntime> btRuntime_; SharedHandle<BtRuntime> btRuntime_;
@ -74,8 +66,6 @@ private:
SharedHandle<DHTTask> task_; SharedHandle<DHTTask> task_;
size_t numRetry_;
Timer lastGetPeerTime_; Timer lastGetPeerTime_;
public: public:
DHTGetPeersCommand(cuid_t cuid, RequestGroup* requestGroup, DHTGetPeersCommand(cuid_t cuid, RequestGroup* requestGroup,