diff options
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/DownloadTask.java')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/DownloadTask.java | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/DownloadTask.java b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/DownloadTask.java index 346928de..29f74459 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/DownloadTask.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/DownloadTask.java @@ -32,6 +32,7 @@ public class DownloadTask extends TransferTask { private final String downloadToken; private final RandomAccessFile fileHandle; private final ChunkList chunks; + private final long startTime; private boolean fileWritable = true; public DownloadTask(String host, int port, String downloadToken, File destinationFile, long fileSize, @@ -42,6 +43,7 @@ public class DownloadTask extends TransferTask { this.downloadToken = downloadToken; this.fileHandle = new RandomAccessFile(destinationFile, "rw"); this.chunks = new ChunkList(fileSize, sha1Sums); + this.startTime = System.currentTimeMillis(); } private class DownloadHandler implements WantRangeCallback, DataReceivedCallback { @@ -176,6 +178,7 @@ public class DownloadTask extends TransferTask { } long speed = 0; long timeRemaining = 0; + long virtualSpeed = 0; synchronized (transfers) { for (TransferThread thread : transfers) { speed += thread.getCurrentSpeed(); @@ -191,8 +194,9 @@ public class DownloadTask extends TransferTask { } final long bytesRemaining = CHUNK_SIZE * (long) missing; timeRemaining = (1000 * bytesRemaining) / (speed + 1); + virtualSpeed = ((progress.length - missing) * CHUNK_SIZE * 1000) / (System.currentTimeMillis() - startTime + 1); } - return new TransferEvent(state, progress, speed, timeRemaining, error); + return new TransferEvent(state, progress, speed, virtualSpeed, timeRemaining, error); } @Override |