diff options
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/filetransfer')
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; + } } |