summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/filetransfer/util/IncomingTransferBase.java
diff options
context:
space:
mode:
authorSimon Rettberg2018-04-13 10:10:49 +0200
committerSimon Rettberg2018-04-13 10:10:49 +0200
commite8873c0718b39666a87086d1e0a8a35c51003a76 (patch)
tree151b65dddd54361ce442517f51aeef3e2fb4ca1a /src/main/java/org/openslx/filetransfer/util/IncomingTransferBase.java
parentadded mountpoint/drive and displaynames to netshare (diff)
downloadmaster-sync-shared-e8873c0718b39666a87086d1e0a8a35c51003a76.tar.gz
master-sync-shared-e8873c0718b39666a87086d1e0a8a35c51003a76.tar.xz
master-sync-shared-e8873c0718b39666a87086d1e0a8a35c51003a76.zip
Filetransfer: Support calculating dnbd3 crc32 list
Diffstat (limited to 'src/main/java/org/openslx/filetransfer/util/IncomingTransferBase.java')
-rw-r--r--src/main/java/org/openslx/filetransfer/util/IncomingTransferBase.java23
1 files changed, 20 insertions, 3 deletions
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 )
+ {
+ }
+
}