Package io.servicetalk.http.api
Class StreamingHttpClientFilter
- java.lang.Object
-
- io.servicetalk.http.api.StreamingHttpClientFilter
-
- All Implemented Interfaces:
AsyncCloseable,ListenableAsyncCloseable,FilterableStreamingHttpClient,StreamingHttpRequester,StreamingHttpRequestFactory
public class StreamingHttpClientFilter extends java.lang.Object implements FilterableStreamingHttpClient
AStreamingHttpClientthat delegates all methods to a differentStreamingHttpClient.
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedStreamingHttpClientFilter(FilterableStreamingHttpClient delegate)Create a new instance.
-
Method Summary
-
-
-
Constructor Detail
-
StreamingHttpClientFilter
protected StreamingHttpClientFilter(FilterableStreamingHttpClient delegate)
Create a new instance.- Parameters:
delegate- TheFilterableStreamingHttpClientto delegate all calls to.
-
-
Method Detail
-
request
public final Single<StreamingHttpResponse> request(HttpExecutionStrategy strategy, StreamingHttpRequest request)
Description copied from interface:StreamingHttpRequesterSend arequestusing the specifiedstrategy.- Specified by:
requestin interfaceStreamingHttpRequester- Parameters:
strategy-HttpExecutionStrategyto use for executing the request.request- the request to send.- Returns:
- The response.
-
reserveConnection
public Single<? extends FilterableReservedStreamingHttpConnection> reserveConnection(HttpExecutionStrategy strategy, HttpRequestMetaData metaData)
Description copied from interface:FilterableStreamingHttpClientReserve aStreamingHttpConnectionbased on providedHttpRequestMetaData.- Specified by:
reserveConnectionin interfaceFilterableStreamingHttpClient- Parameters:
strategy-HttpExecutionStrategyto use.metaData- Allows the underlying layers to know whatStreamingHttpConnections are valid to reserve for futurerequestswith the sameHttpRequestMetaData. For example this may provide some insight into shard or other info.- Returns:
- a
Singlethat provides theReservedStreamingHttpConnectionupon completion.
-
executionContext
public HttpExecutionContext executionContext()
Description copied from interface:StreamingHttpRequesterGet theHttpExecutionContextused during construction of this object.Note that the
ExecutionContext.ioExecutor()will not necessarily be associated with a specific thread unless that was how this object was built.- Specified by:
executionContextin interfaceStreamingHttpRequester- Returns:
- the
HttpExecutionContextused during construction of this object.
-
httpResponseFactory
public StreamingHttpResponseFactory httpResponseFactory()
Description copied from interface:StreamingHttpRequesterGet aStreamingHttpResponseFactory.- Specified by:
httpResponseFactoryin interfaceStreamingHttpRequester- Returns:
- a
StreamingHttpResponseFactory.
-
onClose
public Completable onClose()
Description copied from interface:ListenableAsyncCloseableReturns aCompletablethat is notified once theListenableAsyncCloseablewas closed.- Specified by:
onClosein interfaceListenableAsyncCloseable- Returns:
- the
Completablethat is notified on close.
-
closeAsync
public Completable closeAsync()
Description copied from interface:AsyncCloseableUsed to close/shutdown a resource.- Specified by:
closeAsyncin interfaceAsyncCloseable- Returns:
- A
Completablethat is notified once the close is complete.
-
closeAsyncGracefully
public Completable closeAsyncGracefully()
Description copied from interface:AsyncCloseableUsed to close/shutdown a resource, similar toAsyncCloseable.closeAsync(), but attempts to cleanup state before abruptly closing. This provides a hint that implementations can use to stop accepting new work and finish in flight work. This method is implemented on a "best effort" basis and may be equivalent toAsyncCloseable.closeAsync().Note: Implementations may or may not apply a timeout for this operation to complete, if a caller does not want to wait indefinitely, and are unsure if the implementation applies a timeout, it is advisable to apply a timeout and force a call to
AsyncCloseable.closeAsync().- Specified by:
closeAsyncGracefullyin interfaceAsyncCloseable- Returns:
- A
Completablethat is notified once the close is complete.
-
newRequest
public StreamingHttpRequest newRequest(HttpRequestMethod method, java.lang.String requestTarget)
Description copied from interface:StreamingHttpRequestFactoryCreate a newHttpRequestFactory.- Specified by:
newRequestin interfaceStreamingHttpRequestFactory- Parameters:
method- TheHttpRequestMethod.requestTarget- The request target.- Returns:
- a new
HttpRequestFactory.
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
delegate
protected final FilterableStreamingHttpClient delegate()
Get theFilterableStreamingHttpClientthis method delegates to.- Returns:
- the
FilterableStreamingHttpClientthis method delegates to.
-
request
protected Single<StreamingHttpResponse> request(StreamingHttpRequester delegate, HttpExecutionStrategy strategy, StreamingHttpRequest request)
Called when the filter needs to delegate the request using the providedStreamingHttpRequesteron which to callStreamingHttpRequester.request(HttpExecutionStrategy, StreamingHttpRequest).- Parameters:
delegate- TheStreamingHttpRequesterto delegate requests to.strategy- TheHttpExecutionStrategyto use for executing the request.request- The request to delegate.- Returns:
- the response.
-
-