From 6c806c444137f7839b50cfbfb6d60bf6519d363b Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Tue, 29 Oct 2019 01:00:59 +0000 Subject: [PATCH] fix display of uploader progress to reach 100% --- .../main/groovy/com/muwire/clilanterna/UploadsModel.groovy | 2 ++ .../groovy/com/muwire/core/upload/ContentUploader.groovy | 5 ++++- gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy | 2 ++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/UploadsModel.groovy b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/UploadsModel.groovy index 20599da3..7e13ec62 100644 --- a/cli-lanterna/src/main/groovy/com/muwire/clilanterna/UploadsModel.groovy +++ b/cli-lanterna/src/main/groovy/com/muwire/clilanterna/UploadsModel.groovy @@ -77,6 +77,8 @@ class UploadsModel { int pieces = it.uploader.getTotalPieces() int done = it.uploader.getDonePieces() + if (percent == 100) + done++ int percentTotal = -1 if (pieces != 0) percentTotal = (done * 100) / pieces diff --git a/core/src/main/groovy/com/muwire/core/upload/ContentUploader.groovy b/core/src/main/groovy/com/muwire/core/upload/ContentUploader.groovy index a2457df2..90bc4f0f 100644 --- a/core/src/main/groovy/com/muwire/core/upload/ContentUploader.groovy +++ b/core/src/main/groovy/com/muwire/core/upload/ContentUploader.groovy @@ -20,6 +20,8 @@ class ContentUploader extends Uploader { private final ContentRequest request private final Mesh mesh private final int pieceSize + + private volatile boolean done ContentUploader(File file, ContentRequest request, Endpoint endpoint, Mesh mesh, int pieceSize) { super(endpoint) @@ -71,6 +73,7 @@ class ContentUploader extends Uploader { } endpoint.getOutputStream().write(tmp, 0, read) } + done = true } finally { try {channel?.close() } catch (IOException ignored) {} endpoint.getOutputStream().flush() @@ -100,7 +103,7 @@ class ContentUploader extends Uploader { @Override public synchronized int getProgress() { if (mapped == null) - return 0 + return done ? 100 : 0 int position = mapped.position() int total = request.getRange().end - request.getRange().start (int)(position * 100.0 / total) diff --git a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy index baf3f052..d52b3fd3 100644 --- a/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/MainFrameView.groovy @@ -282,6 +282,8 @@ class MainFrameView { closureColumn(header : "Remote Pieces", type : String, read : { row -> int pieces = row.uploader.getTotalPieces() int done = row.uploader.getDonePieces() + if (row.uploader.getProgress() == 100) + done++ int percent = -1 if ( pieces != 0 ) { percent = (done * 100) / pieces