summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/DownloadTask.java
diff options
context:
space:
mode:
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.java6
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