From 61831b11dcf88236df52effcb4e2606edc9b0444 Mon Sep 17 00:00:00 2001 From: zzz Date: Mon, 12 Sep 2011 14:03:51 +0000 Subject: [PATCH] * i2psnark: Fix inaccuracy in the completed bytes display --- .../java/src/org/klomp/snark/Snark.java | 20 +++++++++++++++++++ .../org/klomp/snark/web/I2PSnarkServlet.java | 3 +-- history.txt | 1 + 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/Snark.java b/apps/i2psnark/java/src/org/klomp/snark/Snark.java index 0f294de0b..c7272eca6 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/Snark.java +++ b/apps/i2psnark/java/src/org/klomp/snark/Snark.java @@ -779,6 +779,26 @@ public class Snark return -1; } + /** + * @return exact value. or -1 if no storage yet. + * getNeeded() * pieceLength(0) isn't accurate if last piece + * is still needed. + * @since 0.8.9 + */ + public long getRemainingLength() { + if (meta != null && storage != null) { + long needed = storage.needed(); + long length0 = meta.getPieceLength(0); + long remaining = needed * length0; + // fixup if last piece is needed + int last = meta.getPieces() - 1; + if (last != 0 && !storage.getBitField().get(last)) + remaining -= length0 - meta.getPieceLength(last); + return remaining; + } + return -1; + } + /** * @return number of pieces still needed (magnet mode or not), or -1 if unknown * @since 0.8.4 diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 1edc4d4a3..21dab96cb 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -765,8 +765,7 @@ public class I2PSnarkServlet extends Default { } } long total = snark.getTotalLength(); - // Early typecast, avoid possibly overflowing a temp integer - long remaining = (long) snark.getNeeded() * (long) snark.getPieceLength(0); + long remaining = snark.getRemainingLength(); if (remaining > total) remaining = total; long downBps = snark.getDownloadRate(); diff --git a/history.txt b/history.txt index 7b57b30c7..6837ffca3 100644 --- a/history.txt +++ b/history.txt @@ -2,6 +2,7 @@ * Build Executor: - Limit max parallel builds on really slow machines (ticket #519) - Slow down build loop when network is apparently disconnected (ticket #519) + * i2psnark: Fix inaccuracy in the completed bytes display * NetDB: Disable floodfill at shutdown time if enabled 2011-09-09 zzz