From 11681966dfb7bc48d6409e6ece2304697dff6c6f Mon Sep 17 00:00:00 2001 From: Timm Fitschen <t.fitschen@indiscale.com> Date: Wed, 1 Sep 2021 20:58:24 +0200 Subject: [PATCH] BUG: send other chunks in file download --- src/main/java/org/caosdb/server/grpc/DownloadBuffer.java | 1 + .../caosdb/server/grpc/FileTransmissionServiceImpl.java | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/caosdb/server/grpc/DownloadBuffer.java b/src/main/java/org/caosdb/server/grpc/DownloadBuffer.java index c1598f30..ba54a1c8 100644 --- a/src/main/java/org/caosdb/server/grpc/DownloadBuffer.java +++ b/src/main/java/org/caosdb/server/grpc/DownloadBuffer.java @@ -37,6 +37,7 @@ public class DownloadBuffer { final long next_chunk_size = Math.min(unread_bytes, getChunkSize()); final MappedByteBuffer map = fileChannel.map(MapMode.READ_ONLY, position, next_chunk_size); + fileChannel.position(position + next_chunk_size); final FileChunk.Builder builder = FileChunk.newBuilder(); builder.setData(ByteString.copyFrom(map)); diff --git a/src/main/java/org/caosdb/server/grpc/FileTransmissionServiceImpl.java b/src/main/java/org/caosdb/server/grpc/FileTransmissionServiceImpl.java index 8007dcb1..fd462053 100644 --- a/src/main/java/org/caosdb/server/grpc/FileTransmissionServiceImpl.java +++ b/src/main/java/org/caosdb/server/grpc/FileTransmissionServiceImpl.java @@ -133,10 +133,14 @@ public class FileTransmissionServiceImpl extends FileTransmissionServiceImplBase final FileDownloadRequest request, final StreamObserver<FileDownloadResponse> responseObserver) { try { - final FileDownloadResponse response = + FileDownloadResponse response = fileDownloadRegistration.downloadNextChunk(request.getFileTransmissionId()); - responseObserver.onNext(response); + + while (response.getStatus() == TransmissionStatus.TRANSMISSION_STATUS_GO_ON) { + response = fileDownloadRegistration.downloadNextChunk(request.getFileTransmissionId()); + responseObserver.onNext(response); + } responseObserver.onCompleted(); } catch (final Exception e) { e.printStackTrace(); -- GitLab