Class PresignedUrlMultipartDownloaderSubscriber
java.lang.Object
software.amazon.awssdk.services.s3.internal.multipart.PresignedUrlMultipartDownloaderSubscriber
- All Implemented Interfaces:
org.reactivestreams.Subscriber<AsyncResponseTransformer<GetObjectResponse,GetObjectResponse>>
@ThreadSafe
@SdkInternalApi
public class PresignedUrlMultipartDownloaderSubscriber
extends Object
implements org.reactivestreams.Subscriber<AsyncResponseTransformer<GetObjectResponse,GetObjectResponse>>
A subscriber implementation that will download all individual parts for a multipart presigned URL download request.
It receives individual
AsyncResponseTransformer instances which will be used to perform the individual
range-based part requests using presigned URLs. This is a 'one-shot' class, it should NOT be reused
for more than one multipart download.
Unlike the standard MultipartDownloaderSubscriber which uses S3's native multipart API with part numbers,
this subscriber uses HTTP range requests against presigned URLs to achieve multipart download functionality.
This implementation is thread-safe and handles concurrent part downloads while maintaining proper ordering and validation of responses.
-
Constructor Summary
ConstructorsConstructorDescriptionPresignedUrlMultipartDownloaderSubscriber(S3AsyncClient s3AsyncClient, PresignedUrlDownloadRequest presignedUrlDownloadRequest, long configuredPartSizeInBytes, CompletableFuture<?> resultFuture) -
Method Summary
Modifier and TypeMethodDescriptionvoidvoidvoidonNext(AsyncResponseTransformer<GetObjectResponse, GetObjectResponse> asyncResponseTransformer) voidonSubscribe(org.reactivestreams.Subscription s)
-
Constructor Details
-
PresignedUrlMultipartDownloaderSubscriber
public PresignedUrlMultipartDownloaderSubscriber(S3AsyncClient s3AsyncClient, PresignedUrlDownloadRequest presignedUrlDownloadRequest, long configuredPartSizeInBytes, CompletableFuture<?> resultFuture)
-
-
Method Details
-
onSubscribe
public void onSubscribe(org.reactivestreams.Subscription s) - Specified by:
onSubscribein interfaceorg.reactivestreams.Subscriber<AsyncResponseTransformer<GetObjectResponse,GetObjectResponse>>
-
onNext
public void onNext(AsyncResponseTransformer<GetObjectResponse, GetObjectResponse> asyncResponseTransformer) - Specified by:
onNextin interfaceorg.reactivestreams.Subscriber<AsyncResponseTransformer<GetObjectResponse,GetObjectResponse>>
-
onError
- Specified by:
onErrorin interfaceorg.reactivestreams.Subscriber<AsyncResponseTransformer<GetObjectResponse,GetObjectResponse>>
-
onComplete
public void onComplete()- Specified by:
onCompletein interfaceorg.reactivestreams.Subscriber<AsyncResponseTransformer<GetObjectResponse,GetObjectResponse>>
-