* i2psnark: Ensure current stats and correct event delivered in announce

This commit is contained in:
zzz
2013-04-27 14:34:00 +00:00
parent 011e91140c
commit 7181e3eb87

View File

@ -439,31 +439,37 @@ public class TrackerClient implements Runnable {
* @return max peers seen * @return max peers seen
*/ */
private int getPeersFromTrackers(List<TCTracker> trckrs) { private int getPeersFromTrackers(List<TCTracker> trckrs) {
long uploaded = coordinator.getUploaded();
long downloaded = coordinator.getDownloaded();
long left = coordinator.getLeft(); // -1 in magnet mode long left = coordinator.getLeft(); // -1 in magnet mode
// First time we got a complete download? // First time we got a complete download?
String event; boolean newlyCompleted;
if (!completed && left == 0) if (!completed && left == 0) {
{
completed = true; completed = true;
event = COMPLETED_EVENT; newlyCompleted = true;
} } else {
else newlyCompleted = false;
event = NO_EVENT; }
// *** loop once for each tracker // *** loop once for each tracker
int maxSeenPeers = 0; int maxSeenPeers = 0;
for (TCTracker tr : trckrs) { for (TCTracker tr : trckrs) {
if ((!stop) && (!tr.stop) && if ((!stop) && (!tr.stop) &&
(completed || coordinator.needOutboundPeers() || !tr.started) && (completed || coordinator.needOutboundPeers() || !tr.started) &&
(event.equals(COMPLETED_EVENT) || System.currentTimeMillis() > tr.lastRequestTime + tr.interval)) (newlyCompleted || System.currentTimeMillis() > tr.lastRequestTime + tr.interval))
{ {
try try
{ {
if (!tr.started) long uploaded = coordinator.getUploaded();
event = STARTED_EVENT; long downloaded = coordinator.getDownloaded();
left = coordinator.getLeft();
String event;
if (!tr.started) {
event = STARTED_EVENT;
} else if (newlyCompleted) {
event = COMPLETED_EVENT;
} else {
event = NO_EVENT;
}
TrackerInfo info = doRequest(tr, infoHash, peerID, TrackerInfo info = doRequest(tr, infoHash, peerID,
uploaded, downloaded, left, uploaded, downloaded, left,
event); event);