• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 package software.amazon.awssdk.crt.http;
7 
8 import java.nio.ByteBuffer;
9 
10 /**
11  * Response handler implementation used by the native http layer
12  */
13 class HttpStreamResponseHandlerNativeAdapter {
14     private HttpStreamResponseHandler responseHandler;
15     private HttpStreamBaseResponseHandler responseBaseHandler;
16 
HttpStreamResponseHandlerNativeAdapter(HttpStreamResponseHandler responseHandler)17     HttpStreamResponseHandlerNativeAdapter(HttpStreamResponseHandler responseHandler) {
18         this.responseHandler = responseHandler;
19         this.responseBaseHandler = null;
20     }
21 
HttpStreamResponseHandlerNativeAdapter(HttpStreamBaseResponseHandler responseBaseHandler)22     HttpStreamResponseHandlerNativeAdapter(HttpStreamBaseResponseHandler responseBaseHandler) {
23         this.responseBaseHandler = responseBaseHandler;
24         this.responseHandler = null;
25     }
26 
onResponseHeaders(HttpStreamBase stream, int responseStatusCode, int blockType, ByteBuffer headersBlob)27     void onResponseHeaders(HttpStreamBase stream, int responseStatusCode, int blockType, ByteBuffer headersBlob) {
28         HttpHeader[] headersArray = HttpHeader.loadHeadersFromMarshalledHeadersBlob(headersBlob);
29         if (this.responseBaseHandler != null) {
30             responseBaseHandler.onResponseHeaders(stream, responseStatusCode, blockType, headersArray);
31         } else {
32             responseHandler.onResponseHeaders((HttpStream) stream, responseStatusCode, blockType, headersArray);
33         }
34     }
35 
onResponseHeadersDone(HttpStreamBase stream, int blockType)36     void onResponseHeadersDone(HttpStreamBase stream, int blockType) {
37         if (this.responseBaseHandler != null) {
38             responseBaseHandler.onResponseHeadersDone(stream, blockType);
39         } else {
40             responseHandler.onResponseHeadersDone((HttpStream) stream, blockType);
41         }
42     }
43 
onResponseBody(HttpStreamBase stream, ByteBuffer bodyBytesIn)44     int onResponseBody(HttpStreamBase stream, ByteBuffer bodyBytesIn) {
45         byte[] body = new byte[bodyBytesIn.limit()];
46         bodyBytesIn.get(body);
47         if (this.responseBaseHandler != null) {
48             return responseBaseHandler.onResponseBody(stream, body);
49         } else {
50             return responseHandler.onResponseBody((HttpStream) stream, body);
51         }
52     }
53 
onMetrics(HttpStreamBase stream, HttpStreamMetrics metrics)54     void onMetrics(HttpStreamBase stream, HttpStreamMetrics metrics) {
55         if (this.responseBaseHandler != null) {
56             responseBaseHandler.onMetrics(stream, metrics);
57         } else {
58             responseHandler.onMetrics((HttpStream) stream, metrics);
59         }
60     }
61 
onResponseComplete(HttpStreamBase stream, int errorCode)62     void onResponseComplete(HttpStreamBase stream, int errorCode) {
63         if (this.responseBaseHandler != null) {
64             responseBaseHandler.onResponseComplete(stream, errorCode);
65         } else {
66             responseHandler.onResponseComplete((HttpStream) stream, errorCode);
67         }
68     }
69 }
70