mirror of https://github.com/aria2/aria2
pull/1/head
parent
da7edb7867
commit
d6100c7507
|
@ -44,36 +44,26 @@ void PeerChokeCommand::optUnchokingPeer(Peers& peers) const {
|
||||||
}
|
}
|
||||||
Peer* peer = peers.front();
|
Peer* peer = peers.front();
|
||||||
peer->optUnchoking = true;
|
peer->optUnchoking = true;
|
||||||
/*
|
logger->debug("opt, unchoking %s, delta=%d",
|
||||||
Peers::iterator itr = peers.begin();
|
peer->ipaddr.c_str(), peer->getDeltaUpload());
|
||||||
for(;itr != peers.end(); itr++) {
|
if(e->torrentMan->isEndGame()) {
|
||||||
if((*itr)->optUnchoking) {
|
Peers::iterator itr = peers.begin()+1;
|
||||||
|
for(; itr != peers.end(); itr++) {
|
||||||
|
Peer* peer = *itr;
|
||||||
|
if(peer->amInterested && peer->peerInterested) {
|
||||||
|
peer->optUnchoking = true;
|
||||||
|
logger->debug("opt, unchoking %s, delta=%d",
|
||||||
|
peer->ipaddr.c_str(), peer->getDeltaUpload());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(itr != peers.end()) {
|
|
||||||
(*itr)->optUnchoking = false;
|
|
||||||
itr++;
|
|
||||||
}
|
}
|
||||||
if(itr == peers.end()) {
|
|
||||||
itr = peers.begin();
|
|
||||||
}
|
|
||||||
(*itr)->optUnchoking = true;
|
|
||||||
*/
|
|
||||||
logger->debug("opt, unchoking %s, delta=%d",
|
|
||||||
peer->ipaddr.c_str(), peer->getDeltaUpload());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void PeerChokeCommand::setAllPeerResetDeltaUpload(Peers& peers) const {
|
void PeerChokeCommand::setAllPeerResetDelta(Peers& peers) const {
|
||||||
for(Peers::iterator itr = peers.begin(); itr != peers.end(); itr++) {
|
for(Peers::iterator itr = peers.begin(); itr != peers.end(); itr++) {
|
||||||
Peer* peer = *itr;
|
Peer* peer = *itr;
|
||||||
peer->resetDeltaUpload();
|
peer->resetDeltaUpload();
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void PeerChokeCommand::setAllPeerResetDeltaDownload(Peers& peers) const {
|
|
||||||
for(Peers::iterator itr = peers.begin(); itr != peers.end(); itr++) {
|
|
||||||
Peer* peer = *itr;
|
|
||||||
peer->resetDeltaDownload();
|
peer->resetDeltaDownload();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -113,6 +103,7 @@ bool PeerChokeCommand::execute() {
|
||||||
Peer* peer = *itr;
|
Peer* peer = *itr;
|
||||||
if(peer->peerInterested) {
|
if(peer->peerInterested) {
|
||||||
peer->chokingRequired = false;
|
peer->chokingRequired = false;
|
||||||
|
peer->optUnchoking = false;
|
||||||
itr = peers.erase(itr);
|
itr = peers.erase(itr);
|
||||||
unchokingCount--;
|
unchokingCount--;
|
||||||
logger->debug("cat01, unchoking %s, delta=%d", peer->ipaddr.c_str(), peer->getDeltaUpload());
|
logger->debug("cat01, unchoking %s, delta=%d", peer->ipaddr.c_str(), peer->getDeltaUpload());
|
||||||
|
@ -124,6 +115,7 @@ bool PeerChokeCommand::execute() {
|
||||||
Peer* peer = *itr;
|
Peer* peer = *itr;
|
||||||
if(!peer->peerInterested) {
|
if(!peer->peerInterested) {
|
||||||
peer->chokingRequired = false;
|
peer->chokingRequired = false;
|
||||||
|
peer->optUnchoking = false;
|
||||||
itr = peers.erase(itr);
|
itr = peers.erase(itr);
|
||||||
logger->debug("cat02, unchoking %s, delta=%d", peer->ipaddr.c_str(), peer->getDeltaUpload());
|
logger->debug("cat02, unchoking %s, delta=%d", peer->ipaddr.c_str(), peer->getDeltaUpload());
|
||||||
break;
|
break;
|
||||||
|
@ -136,11 +128,7 @@ bool PeerChokeCommand::execute() {
|
||||||
rotate = 0;
|
rotate = 0;
|
||||||
}
|
}
|
||||||
rotate++;
|
rotate++;
|
||||||
if(e->torrentMan->downloadComplete()) {
|
setAllPeerResetDelta(e->torrentMan->getActivePeers());
|
||||||
setAllPeerResetDeltaDownload(e->torrentMan->getActivePeers());
|
|
||||||
} else {
|
|
||||||
setAllPeerResetDeltaUpload(e->torrentMan->getActivePeers());
|
|
||||||
}
|
|
||||||
|
|
||||||
SleepCommand* command = new SleepCommand(cuid, e, this, interval);
|
SleepCommand* command = new SleepCommand(cuid, e, this, interval);
|
||||||
e->commands.push(command);
|
e->commands.push(command);
|
||||||
|
|
|
@ -34,8 +34,7 @@ private:
|
||||||
void orderByUploadRate(Peers& peers) const;
|
void orderByUploadRate(Peers& peers) const;
|
||||||
void orderByDownloadRate(Peers& peers) const;
|
void orderByDownloadRate(Peers& peers) const;
|
||||||
void setAllPeerChoked(Peers& peers) const;
|
void setAllPeerChoked(Peers& peers) const;
|
||||||
void setAllPeerResetDeltaUpload(Peers& peers) const;
|
void setAllPeerResetDelta(Peers& peers) const;
|
||||||
void setAllPeerResetDeltaDownload(Peers& peers) const;
|
|
||||||
void optUnchokingPeer(Peers& peers) const;
|
void optUnchokingPeer(Peers& peers) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -333,7 +333,7 @@ Piece PeerInteractionCommand::getNewPieceAndSendInterest() {
|
||||||
PendingMessage pendingMessage(PeerMessage::NOT_INTERESTED, peerConnection);
|
PendingMessage pendingMessage(PeerMessage::NOT_INTERESTED, peerConnection);
|
||||||
sendMessageQueue->addPendingMessage(pendingMessage);
|
sendMessageQueue->addPendingMessage(pendingMessage);
|
||||||
} else {
|
} else {
|
||||||
logger->debug("CUID#%d - starting download for piece index=%d", cuid, piece.getIndex());
|
logger->debug("CUID#%d - starting download for piece index=%d (%d/%d completed)", cuid, piece.getIndex(), piece.countCompleteBlock(), piece.countBlock());
|
||||||
logger->debug("CUID#%d - try to send interested", cuid);
|
logger->debug("CUID#%d - try to send interested", cuid);
|
||||||
PendingMessage pendingMessage(PeerMessage::INTERESTED, peerConnection);
|
PendingMessage pendingMessage(PeerMessage::INTERESTED, peerConnection);
|
||||||
sendMessageQueue->addPendingMessage(pendingMessage);
|
sendMessageQueue->addPendingMessage(pendingMessage);
|
||||||
|
|
|
@ -96,8 +96,10 @@ void TorrentDownloadEngine::calculateStatistics() {
|
||||||
totalLength = torrentMan->getTotalLength();
|
totalLength = torrentMan->getTotalLength();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(elapsed > 0) {
|
||||||
downloadSpeed = calculateSpeed(sessionDownloadLengthArray[currentCp], elapsed);
|
downloadSpeed = calculateSpeed(sessionDownloadLengthArray[currentCp], elapsed);
|
||||||
uploadSpeed = calculateSpeed(sessionUploadLengthArray[currentCp], elapsed);
|
uploadSpeed = calculateSpeed(sessionUploadLengthArray[currentCp], elapsed);
|
||||||
|
}
|
||||||
|
|
||||||
if(elapsed-lastElapsed >= 1) {
|
if(elapsed-lastElapsed >= 1) {
|
||||||
avgSpeed = calculateSpeed(sessionDownloadLength,
|
avgSpeed = calculateSpeed(sessionDownloadLength,
|
||||||
|
|
|
@ -68,6 +68,7 @@ public:
|
||||||
|
|
||||||
// returns uploading speed in byte/sec.
|
// returns uploading speed in byte/sec.
|
||||||
int getUploadSpeed() const { return uploadSpeed; }
|
int getUploadSpeed() const { return uploadSpeed; }
|
||||||
|
int getDownloadSpeed() const { return downloadSpeed; }
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _D_TORRENT_DOWNLOAD_ENGINE_H_
|
#endif // _D_TORRENT_DOWNLOAD_ENGINE_H_
|
||||||
|
|
Loading…
Reference in New Issue