From e8873c0718b39666a87086d1e0a8a35c51003a76 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Fri, 13 Apr 2018 10:10:49 +0200 Subject: Filetransfer: Support calculating dnbd3 crc32 list --- .../filetransfer/util/IncomingTransferBase.java | 23 +++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'src/main/java/org/openslx/filetransfer/util/IncomingTransferBase.java') diff --git a/src/main/java/org/openslx/filetransfer/util/IncomingTransferBase.java b/src/main/java/org/openslx/filetransfer/util/IncomingTransferBase.java index 4135ca7..b298c04 100644 --- a/src/main/java/org/openslx/filetransfer/util/IncomingTransferBase.java +++ b/src/main/java/org/openslx/filetransfer/util/IncomingTransferBase.java @@ -214,7 +214,7 @@ public abstract class IncomingTransferBase extends AbstractTransfer implements H continue; } try { - if ( !hashChecker.queue( chunk, data, this, false ) ) { // false == queue full, stop + if ( !hashChecker.queue( chunk, data, this, HashChecker.CALC_HASH ) ) { // false == queue full, stop chunks.markCompleted( chunk, false ); break; } @@ -285,9 +285,10 @@ public abstract class IncomingTransferBase extends AbstractTransfer implements H public FileRange get() { if ( currentChunk != null ) { + chunkReceived( currentChunk, buffer ); if ( hashChecker != null && currentChunk.getSha1Sum() != null ) { try { - hashChecker.queue( currentChunk, buffer, IncomingTransferBase.this, true ); + hashChecker.queue( currentChunk, buffer, IncomingTransferBase.this, HashChecker.BLOCKING | HashChecker.CALC_HASH ); } catch ( InterruptedException e ) { chunks.markCompleted( currentChunk, false ); currentChunk = null; @@ -515,7 +516,11 @@ public abstract class IncomingTransferBase extends AbstractTransfer implements H return; } try { - if ( !hashChecker.queue( chunk, data, this, blocking ) ) { + int flags = HashChecker.CALC_HASH; + if ( blocking ) { + flags |= HashChecker.BLOCKING; + } + if ( !hashChecker.queue( chunk, data, this, flags ) ) { chunks.markCompleted( chunk, false ); } } catch ( InterruptedException e ) { @@ -540,6 +545,11 @@ public abstract class IncomingTransferBase extends AbstractTransfer implements H } } } + + protected HashChecker getHashChecker() + { + return hashChecker; + } /* * @@ -559,4 +569,11 @@ public abstract class IncomingTransferBase extends AbstractTransfer implements H protected abstract void chunkStatusChanged( FileChunk chunk ); + /** + * Called when a chunk has been received -- no validation has taken place yet + */ + protected void chunkReceived( FileChunk chunk, byte[] data ) + { + } + } -- cgit v1.2.3-55-g7522