fix(S3): ProgressListener
This commit is contained in:
parent
43fb9fb694
commit
c99ff2f190
@ -40,6 +40,7 @@ import java.io.InputStream;
|
|||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
|
|
||||||
import timber.log.Timber;
|
import timber.log.Timber;
|
||||||
|
|
||||||
@ -204,11 +205,15 @@ class S3Impl {
|
|||||||
|
|
||||||
private PutObjectResult uploadFile(final S3File file, DataSource data, final ProgressAware<UploadState> progressAware, final long size) //
|
private PutObjectResult uploadFile(final S3File file, DataSource data, final ProgressAware<UploadState> progressAware, final long size) //
|
||||||
throws IOException {
|
throws IOException {
|
||||||
ProgressListener listener = progressEvent -> progressAware.onProgress( //
|
AtomicLong bytesTransferred = new AtomicLong(0);
|
||||||
progress(UploadState.upload(file)) //
|
ProgressListener listener = progressEvent -> {
|
||||||
.between(0) //
|
bytesTransferred.set(bytesTransferred.get() + progressEvent.getBytesTransferred());
|
||||||
.and(size) //
|
progressAware.onProgress( //
|
||||||
.withValue(progressEvent.getBytesTransferred()));
|
progress(UploadState.upload(file)) //
|
||||||
|
.between(0) //
|
||||||
|
.and(size) //
|
||||||
|
.withValue(bytesTransferred.get()));
|
||||||
|
};
|
||||||
|
|
||||||
ObjectMetadata metadata = new ObjectMetadata();
|
ObjectMetadata metadata = new ObjectMetadata();
|
||||||
metadata.setContentLength(data.size(context).get());
|
metadata.setContentLength(data.size(context).get());
|
||||||
@ -258,12 +263,16 @@ class S3Impl {
|
|||||||
final Optional<File> encryptedTmpFile, //
|
final Optional<File> encryptedTmpFile, //
|
||||||
final Optional<String> cacheKey, //
|
final Optional<String> cacheKey, //
|
||||||
final ProgressAware<DownloadState> progressAware) throws IOException, BackendException {
|
final ProgressAware<DownloadState> progressAware) throws IOException, BackendException {
|
||||||
|
AtomicLong bytesTransferred = new AtomicLong(0);
|
||||||
|
ProgressListener listener = progressEvent -> {
|
||||||
|
bytesTransferred.set(bytesTransferred.get() + progressEvent.getBytesTransferred());
|
||||||
|
|
||||||
ProgressListener listener = progressEvent -> progressAware.onProgress( //
|
progressAware.onProgress( //
|
||||||
progress(DownloadState.download(file)) //
|
progress(DownloadState.download(file)) //
|
||||||
.between(0) //
|
.between(0) //
|
||||||
.and(file.getSize().orElse(Long.MAX_VALUE)) //
|
.and(file.getSize().orElse(Long.MAX_VALUE)) //
|
||||||
.withValue(progressEvent.getBytesTransferred()));
|
.withValue(bytesTransferred.get()));
|
||||||
|
};
|
||||||
|
|
||||||
GetObjectRequest request = new GetObjectRequest(cloud.s3Bucket(), file.getPath());
|
GetObjectRequest request = new GetObjectRequest(cloud.s3Bucket(), file.getPath());
|
||||||
request.setGeneralProgressListener(listener);
|
request.setGeneralProgressListener(listener);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user