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->optUnchoking = true;
/*
Peers::iterator itr = peers.begin();
for(;itr != peers.end(); itr++) {
if((*itr)->optUnchoking) {
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());
if(e->torrentMan->isEndGame()) {
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;
}
}
}
}
void PeerChokeCommand::setAllPeerResetDeltaUpload(Peers& peers) const {
void PeerChokeCommand::setAllPeerResetDelta(Peers& peers) const {
for(Peers::iterator itr = peers.begin(); itr != peers.end(); itr++) {
Peer* peer = *itr;
peer->resetDeltaUpload();
}
}
void PeerChokeCommand::setAllPeerResetDeltaDownload(Peers& peers) const {
for(Peers::iterator itr = peers.begin(); itr != peers.end(); itr++) {
Peer* peer = *itr;
peer->resetDeltaDownload();
}
}
@ -113,6 +103,7 @@ bool PeerChokeCommand::execute() {
Peer* peer = *itr;
if(peer->peerInterested) {
peer->chokingRequired = false;
peer->optUnchoking = false;
itr = peers.erase(itr);
unchokingCount--;
logger->debug("cat01, unchoking %s, delta=%d", peer->ipaddr.c_str(), peer->getDeltaUpload());
@ -124,6 +115,7 @@ bool PeerChokeCommand::execute() {
Peer* peer = *itr;
if(!peer->peerInterested) {
peer->chokingRequired = false;
peer->optUnchoking = false;
itr = peers.erase(itr);
logger->debug("cat02, unchoking %s, delta=%d", peer->ipaddr.c_str(), peer->getDeltaUpload());
break;
@ -136,11 +128,7 @@ bool PeerChokeCommand::execute() {
rotate = 0;
}
rotate++;
if(e->torrentMan->downloadComplete()) {
setAllPeerResetDeltaDownload(e->torrentMan->getActivePeers());
} else {
setAllPeerResetDeltaUpload(e->torrentMan->getActivePeers());
}
setAllPeerResetDelta(e->torrentMan->getActivePeers());
SleepCommand* command = new SleepCommand(cuid, e, this, interval);
e->commands.push(command);

View File

@ -34,8 +34,7 @@ private:
void orderByUploadRate(Peers& peers) const;
void orderByDownloadRate(Peers& peers) const;
void setAllPeerChoked(Peers& peers) const;
void setAllPeerResetDeltaUpload(Peers& peers) const;
void setAllPeerResetDeltaDownload(Peers& peers) const;
void setAllPeerResetDelta(Peers& peers) const;
void optUnchokingPeer(Peers& peers) const;
public:

View File

@ -333,7 +333,7 @@ Piece PeerInteractionCommand::getNewPieceAndSendInterest() {
PendingMessage pendingMessage(PeerMessage::NOT_INTERESTED, peerConnection);
sendMessageQueue->addPendingMessage(pendingMessage);
} 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);
PendingMessage pendingMessage(PeerMessage::INTERESTED, peerConnection);
sendMessageQueue->addPendingMessage(pendingMessage);

View File

@ -96,8 +96,10 @@ void TorrentDownloadEngine::calculateStatistics() {
totalLength = torrentMan->getTotalLength();
}
downloadSpeed = calculateSpeed(sessionDownloadLengthArray[currentCp], elapsed);
uploadSpeed = calculateSpeed(sessionUploadLengthArray[currentCp], elapsed);
if(elapsed > 0) {
downloadSpeed = calculateSpeed(sessionDownloadLengthArray[currentCp], elapsed);
uploadSpeed = calculateSpeed(sessionUploadLengthArray[currentCp], elapsed);
}
if(elapsed-lastElapsed >= 1) {
avgSpeed = calculateSpeed(sessionDownloadLength,

View File

@ -68,6 +68,7 @@ public:
// returns uploading speed in byte/sec.
int getUploadSpeed() const { return uploadSpeed; }
int getDownloadSpeed() const { return downloadSpeed; }
};
#endif // _D_TORRENT_DOWNLOAD_ENGINE_H_