summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer
diff options
context:
space:
mode:
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/AsyncHashGenerator.java7
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferEvent.java13
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/UploadTask.java9
3 files changed, 27 insertions, 2 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/AsyncHashGenerator.java b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/AsyncHashGenerator.java
index 8ef12e12..07efc449 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/AsyncHashGenerator.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/AsyncHashGenerator.java
@@ -57,6 +57,8 @@ public class AsyncHashGenerator extends Thread {
private AtomicInteger pendingHashes = new AtomicInteger();
private volatile boolean isCanceled = false;
+
+ private AtomicInteger completeCount = new AtomicInteger();
static {
LOGGER.info("Using " + HASH_WORK_POOL.getMaximumPoolSize() + " hash workers.");
@@ -225,6 +227,7 @@ public class AsyncHashGenerator extends Thread {
wasLastChunk = true;
}
}
+ completeCount.set(finishedChunks);
}
if (chunkIndex + 1 == chunkList.size()) {
LOGGER.debug("Hashed last chunk #" + chunkIndex + ", total=" + chunkList.size() + ", finished=" + finishedChunks);
@@ -320,4 +323,8 @@ public class AsyncHashGenerator extends Thread {
return true;
}
+ public AtomicInteger getCompleteCounter() {
+ return completeCount;
+ }
+
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferEvent.java b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferEvent.java
index bc75cad8..3ce33e48 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferEvent.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/TransferEvent.java
@@ -42,9 +42,14 @@ public class TransferEvent {
* An optional error message
*/
public final String errorMessage;
+
+ /**
+ * How many blocks have been hashed locally
+ */
+ public final int locallyHashedCount;
public TransferEvent(TransferState state, byte[] progress, long speedRaw, long virtualSpeedRaw, long remainingRaw,
- String errorMessage) {
+ String errorMessage, int hashCompleteCount) {
this.state = state;
this.progress = progress;
this.speedRaw = speedRaw;
@@ -58,6 +63,12 @@ public class TransferEvent {
this.remaining = FormatHelper.formatMilliseconds(remainingRaw + 30000, false);
}
this.errorMessage = errorMessage;
+ this.locallyHashedCount = hashCompleteCount;
+ }
+
+ public TransferEvent(TransferState state, byte[] progress, long speedRaw, long virtualSpeedRaw, long remainingRaw,
+ String errorMessage) {
+ this(state, progress, speedRaw, virtualSpeedRaw, remainingRaw, errorMessage, progress.length);
}
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/UploadTask.java b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/UploadTask.java
index 84b9b47a..fc13f113 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/UploadTask.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer/UploadTask.java
@@ -157,6 +157,8 @@ public class UploadTask extends TransferTask {
private long virtualSpeed = 0;
private long nextQueryDebug;
+ private AtomicInteger hashCompleteCounter;
+
@Override
protected TransferEvent getTransferEvent() {
final long now = System.currentTimeMillis();
@@ -206,7 +208,8 @@ public class UploadTask extends TransferTask {
if (transferConnectionError != null && (error == null || transferConnectionError.equals("Out of disk space"))) {
error = transferConnectionError;
}
- TransferEvent event = new TransferEvent(state, blocks, speed, virtualSpeed, timeRemaining, error);
+ TransferEvent event = new TransferEvent(state, blocks, speed, virtualSpeed, timeRemaining, error,
+ hashCompleteCounter.get());
return event;
}
@@ -214,4 +217,8 @@ public class UploadTask extends TransferTask {
protected TransferThread createNewThread() {
return new UploadThread();
}
+
+ public void setHashCounter(AtomicInteger completeCounter) {
+ this.hashCompleteCounter = completeCounter;
+ }
}