Class HttpStreamManager
- All Implemented Interfaces:
AutoCloseable
-
Method Summary
Modifier and TypeMethodDescriptionvoidabortStream(HttpStreamBase stream) Abort an in-flight stream obtained from this manager.acquireStream(HttpRequestBase request, HttpStreamBaseResponseHandler streamHandler) Request an HttpStream from StreamManager.acquireStream(HttpRequestBase request, HttpStreamBaseResponseHandler streamHandler, boolean useManualDataWrites) Request an HttpStream from StreamManager.voidclose()static HttpStreamManagercreate(HttpStreamManagerOptions options) Factory function for HttpStreamManager instancesint
-
Method Details
-
create
Factory function for HttpStreamManager instances- Parameters:
options- the stream manager options to configure the manager- Returns:
- a new instance of an HttpStreamManager
-
acquireStream
public CompletableFuture<HttpStreamBase> acquireStream(HttpRequestBase request, HttpStreamBaseResponseHandler streamHandler) Request an HttpStream from StreamManager.HTTP/1.1 note: For HTTP/1.1 streams, the future is completed before
activate()is called. Operations on the stream (such ascancel()) require activate to have been called first — otherwise they are a no-op. Callers that need to operate on the stream from a future callback should callstream.activate()before any other operation.activate()is idempotent and safe to call multiple times. HTTP/2 does not have this concern — the H2 stream manager activates the stream from the connection's event-loop thread in the C implementation before completing the future.- Parameters:
request- HttpRequestBase. The Request to make to the Server.streamHandler- HttpStreamBaseResponseHandler. The Stream Handler to be called from the Native EventLoop- Returns:
- A future for a HttpStreamBase that will be completed when the stream is acquired.
-
acquireStream
public CompletableFuture<HttpStreamBase> acquireStream(HttpRequestBase request, HttpStreamBaseResponseHandler streamHandler, boolean useManualDataWrites) Request an HttpStream from StreamManager.HTTP/1.1 note: For HTTP/1.1 streams, the future is completed before
activate()is called. Operations on the stream (such ascancel()) require activate to have been called first — otherwise they are a no-op. Callers that need to operate on the stream from a future callback should callstream.activate()before any other operation.activate()is idempotent and safe to call multiple times. HTTP/2 does not have this concern — the H2 stream manager activates the stream from the connection's event-loop thread in the C implementation before completing the future.- Parameters:
request- HttpRequestBase. The Request to make to the Server.streamHandler- HttpStreamBaseResponseHandler. The Stream Handler to be called from the Native EventLoopuseManualDataWrites- A boolean variable to signal that body will be streamed using async writes.- Returns:
- A future for a HttpStreamBase that will be completed when the stream is acquired.
-
getShutdownCompleteFuture
-
getManagerMetrics
- Returns:
- concurrency metrics for the current manager
-
getMaxConnections
public int getMaxConnections()- Returns:
- maximum number of connections this connection manager will pool
-
abortStream
Abort an in-flight stream obtained from this manager. Cancels the HTTP exchange and ensures the underlying connection/stream slot is properly released back to the pool so it can be reused by new requests.This is the correct way to cancel an in-flight request from outside the stream callback lifecycle (e.g., on SDK timeout). For HTTP/1.1, the connection release is guaranteed by the
AtomicBooleanguard andisNull()check insideHttp1StreamManager.acquireStream()— callingcancel()triggersonResponseCompleteon activated streams, or the post-activate guard catches streams closed before activation. For HTTP/2, the native layer handles stream slot accounting internally.Safe to call with null (e.g., if the stream was never acquired), after normal completion, or multiple times.
- Parameters:
stream- the stream to abort, or null
-
close
public void close()- Specified by:
closein interfaceAutoCloseable
-