Class HttpStream

  • All Implemented Interfaces:
    AutoCloseable

    public class HttpStream
    extends CrtResource
    An HttpStream represents a single Http Request/Response pair within a HttpClientConnection, and wraps the native resources from the aws-c-http library. Can be used to update the Window size, or to abort the stream early in the middle of sending/receiving Http Bodies.
    • Constructor Detail

      • HttpStream

        protected HttpStream​(long ptr)
    • Method Detail

      • canReleaseReferencesImmediately

        protected boolean canReleaseReferencesImmediately()
        Determines whether a resource releases its dependencies at the same time the native handle is released or if it waits. Resources that wait are responsible for calling releaseReferences() manually.
        Specified by:
        canReleaseReferencesImmediately in class CrtResource
        Returns:
        true if this resource releases synchronously, false if this resource performs async shutdown
      • releaseNativeHandle

        protected void releaseNativeHandle()
        Cleans up the stream's associated native handle
        Specified by:
        releaseNativeHandle in class CrtResource
      • incrementWindow

        public void incrementWindow​(int windowSize)
        Opens the Sliding Read/Write Window by the number of bytes passed as an argument for this HttpStream. This function should only be called if the user application previously returned less than the length of the input ByteBuffer from a onResponseBody() call in a HttpStreamResponseHandler, and should be <= to the total number of un-acked bytes.
        Parameters:
        windowSize - How many bytes to increment the sliding window by.
      • writeChunk

        public void writeChunk​(byte[] chunkData,
                               boolean isFinalChunk,
                               HttpStream.HttpStreamWriteChunkCompletionCallback chunkCompletionCallback)
        Use only for Http 1.1 Chunked Encoding. At some later point we may adapt this interface for H2, but not yet. You must call activate() before using this function.
        Parameters:
        chunkData - chunk of data to send.
        isFinalChunk - if set to true, this will terminate the request stream.
        chunkCompletionCallback - Invoked upon the data being flushed to the wire or an error occurring.
      • writeChunk

        public CompletableFuture<Void> writeChunk​(byte[] chunkData,
                                                  boolean isFinalChunk)
        Use only for Http 1.1 Chunked Encoding. At some later point we may adapt this interface for H2, but not yet. You must call activate() before using this function.
        Parameters:
        chunkData - chunk of data to send.
        isFinalChunk - if set to true, this will terminate the request stream.
        Returns:
        completable future which will complete upon the data being flushed to the wire or an error occurring.
      • activate

        public void activate()
        Activates the client stream.
      • getResponseStatusCode

        public int getResponseStatusCode()
        Retrieves the Http Response Status Code
        Returns:
        The Http Response Status Code