diff options
Diffstat (limited to 'src/DHTGetPeersCommand.cc')
| -rw-r--r-- | src/DHTGetPeersCommand.cc | 68 |
1 files changed, 33 insertions, 35 deletions
diff --git a/src/DHTGetPeersCommand.cc b/src/DHTGetPeersCommand.cc index da52ce8e..7bd6d477 100644 --- a/src/DHTGetPeersCommand.cc +++ b/src/DHTGetPeersCommand.cc @@ -67,17 +67,15 @@ const int MAX_RETRIES = 10; } // namespace -DHTGetPeersCommand::DHTGetPeersCommand -(cuid_t cuid, - RequestGroup* requestGroup, - DownloadEngine* e) - : Command{cuid}, - requestGroup_{requestGroup}, - e_{e}, - taskQueue_{nullptr}, - taskFactory_{nullptr}, - numRetry_{0}, - lastGetPeerTime_{Timer::zero()} +DHTGetPeersCommand::DHTGetPeersCommand(cuid_t cuid, RequestGroup* requestGroup, + DownloadEngine* e) + : Command{cuid}, + requestGroup_{requestGroup}, + e_{e}, + taskQueue_{nullptr}, + taskFactory_{nullptr}, + numRetry_{0}, + lastGetPeerTime_{Timer::zero()} { requestGroup_->increaseNumCommand(); } @@ -89,40 +87,39 @@ DHTGetPeersCommand::~DHTGetPeersCommand() bool DHTGetPeersCommand::execute() { - if(btRuntime_->isHalt()) { + if (btRuntime_->isHalt()) { return true; } auto elapsed = lastGetPeerTime_.difference(global::wallclock()); - if(!task_ && - (elapsed >= GET_PEER_INTERVAL || - (((btRuntime_->lessThanMinPeers() && - ((numRetry_ && elapsed >= GET_PEER_INTERVAL_RETRY) || - elapsed >= GET_PEER_INTERVAL_LOW)) || - (btRuntime_->getConnections() == 0 && - elapsed >= GET_PEER_INTERVAL_ZERO)) - && !requestGroup_->downloadFinished()))) { + if (!task_ && (elapsed >= GET_PEER_INTERVAL || + (((btRuntime_->lessThanMinPeers() && + ((numRetry_ && elapsed >= GET_PEER_INTERVAL_RETRY) || + elapsed >= GET_PEER_INTERVAL_LOW)) || + (btRuntime_->getConnections() == 0 && + elapsed >= GET_PEER_INTERVAL_ZERO)) && + !requestGroup_->downloadFinished()))) { A2_LOG_DEBUG(fmt("Issuing PeerLookup for infoHash=%s", - bittorrent::getInfoHashString - (requestGroup_->getDownloadContext()).c_str())); - task_ = taskFactory_->createPeerLookupTask - (requestGroup_->getDownloadContext(), - e_->getBtRegistry()->getTcpPort(), - peerStorage_); + bittorrent::getInfoHashString( + requestGroup_->getDownloadContext()).c_str())); + task_ = taskFactory_->createPeerLookupTask( + requestGroup_->getDownloadContext(), e_->getBtRegistry()->getTcpPort(), + peerStorage_); taskQueue_->addPeriodicTask2(task_); - } else if(task_ && task_->finished()) { + } + else if (task_ && task_->finished()) { A2_LOG_DEBUG("task finished detected"); lastGetPeerTime_ = global::wallclock(); - if(numRetry_ < MAX_RETRIES && - (btRuntime_->getMaxPeers() == 0 || - btRuntime_->getMaxPeers() > - static_cast<int>(peerStorage_->countAllPeer()))) { + if (numRetry_ < MAX_RETRIES && + (btRuntime_->getMaxPeers() == 0 || + btRuntime_->getMaxPeers() > + static_cast<int>(peerStorage_->countAllPeer()))) { ++numRetry_; A2_LOG_DEBUG(fmt("Too few peers. peers=%lu, max_peers=%d." " Try again(%d)", static_cast<unsigned long>(peerStorage_->countAllPeer()), - btRuntime_->getMaxPeers(), - numRetry_)); - } else { + btRuntime_->getMaxPeers(), numRetry_)); + } + else { numRetry_ = 0; } task_.reset(); @@ -142,7 +139,8 @@ void DHTGetPeersCommand::setTaskFactory(DHTTaskFactory* taskFactory) taskFactory_ = taskFactory; } -void DHTGetPeersCommand::setBtRuntime(const std::shared_ptr<BtRuntime>& btRuntime) +void DHTGetPeersCommand::setBtRuntime( + const std::shared_ptr<BtRuntime>& btRuntime) { btRuntime_ = btRuntime; } |
