pull/1/head
Tatsuhiro Tsujikawa 2006-04-29 16:18:00 +00:00
parent da7edb7867
commit d6100c7507
5 changed files with 23 additions and 33 deletions

View File

@ -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);

View File

@ -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:

View File

@ -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);

View File

@ -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,

View File

@ -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_