Skip to content

Commit e175968

Browse files
committed
Updated aws-crt-client to use new 'utils' publishers for its request body logic.
Added two new publishers to 'utils': 1. StoringSubscriber - A subscriber that stores the events it receives in memory for retrieval. 2. ByteBufferStoringSubscriber - A subscriber that stores byte buffers it recevies in memory for retrieval.
1 parent 25c8a30 commit e175968

File tree

11 files changed

+1062
-208
lines changed

11 files changed

+1062
-208
lines changed

build-tools/src/main/resources/software/amazon/awssdk/spotbugs-suppressions.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,13 @@
206206
<Bug pattern="URF_UNREAD_FIELD, RV_RETURN_VALUE_IGNORED"/>
207207
</Match>
208208

209+
<Match>
210+
<Class name="software.amazon.awssdk.utils.async.StoringSubscriber"/>
211+
<Method name="drop"/>
212+
<Bug pattern="RV_RETURN_VALUE_IGNORED"/>
213+
</Match>
214+
215+
209216
<Match>
210217
<Class name="software.amazon.awssdk.http.crt.internal.response.CrtResponseBodyPublisher" />
211218
<Method name="subscribe"/>

http-clients/aws-crt-client/src/main/java/software/amazon/awssdk/http/crt/AwsCrtAsyncHttpClient.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,8 @@ public interface Builder extends SdkAsyncHttpClient.Builder<AwsCrtAsyncHttpClien
322322
*
323323
* @param readBufferSize The number of bytes that can be buffered
324324
* @return The builder of the method chaining.
325+
*
326+
* TODO: This is also used for the write buffer size. Should we rename it?
325327
*/
326328
Builder readBufferSize(int readBufferSize);
327329

http-clients/aws-crt-client/src/main/java/software/amazon/awssdk/http/crt/internal/request/CrtRequestBodyAdapter.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,27 @@
1919
import software.amazon.awssdk.annotations.SdkInternalApi;
2020
import software.amazon.awssdk.crt.http.HttpRequestBodyStream;
2121
import software.amazon.awssdk.http.async.SdkHttpContentPublisher;
22-
import software.amazon.awssdk.utils.Validate;
22+
import software.amazon.awssdk.utils.async.ByteBufferStoringSubscriber;
23+
import software.amazon.awssdk.utils.async.ByteBufferStoringSubscriber.TransferResult;
2324

24-
/**
25-
* Implements the CrtHttpStreamHandler API and converts CRT callbacks into calls to SDK AsyncExecuteRequest methods
26-
*/
2725
@SdkInternalApi
2826
final class CrtRequestBodyAdapter implements HttpRequestBodyStream {
29-
private final int windowSize;
30-
private final CrtRequestBodySubscriber requestBodySubscriber;
27+
private final SdkHttpContentPublisher requestPublisher;
28+
private final ByteBufferStoringSubscriber requestBodySubscriber;
3129

32-
CrtRequestBodyAdapter(SdkHttpContentPublisher requestPublisher, int windowSize) {
33-
this.windowSize = Validate.isPositive(windowSize, "windowSize is <= 0");
34-
this.requestBodySubscriber = new CrtRequestBodySubscriber(windowSize);
30+
CrtRequestBodyAdapter(SdkHttpContentPublisher requestPublisher, int readLimit) {
31+
this.requestPublisher = requestPublisher;
32+
this.requestBodySubscriber = new ByteBufferStoringSubscriber(readLimit);
3533
requestPublisher.subscribe(requestBodySubscriber);
3634
}
3735

3836
@Override
3937
public boolean sendRequestBody(ByteBuffer bodyBytesOut) {
40-
return requestBodySubscriber.transferRequestBody(bodyBytesOut);
38+
return requestBodySubscriber.transferTo(bodyBytesOut) == TransferResult.END_OF_STREAM;
39+
}
40+
41+
@Override
42+
public long getLength() {
43+
return requestPublisher.contentLength().orElse(0L);
4144
}
4245
}

http-clients/aws-crt-client/src/main/java/software/amazon/awssdk/http/crt/internal/request/CrtRequestBodySubscriber.java

Lines changed: 0 additions & 132 deletions
This file was deleted.

http-clients/aws-crt-client/src/test/java/software/amazon/awssdk/http/crt/CrtRequestBodySubscriberReactiveStreamCompatTest.java

Lines changed: 0 additions & 66 deletions
This file was deleted.

0 commit comments

Comments
 (0)