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
AStreamingHttpClient
that delegates all methods to a differentStreamingHttpClient
.
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
StreamingHttpClientFilter(FilterableStreamingHttpClient delegate)
Create a new instance.
-
Method Summary
-
-
-
Constructor Detail
-
StreamingHttpClientFilter
protected StreamingHttpClientFilter(FilterableStreamingHttpClient delegate)
Create a new instance.- Parameters:
delegate
- TheFilterableStreamingHttpClient
to delegate all calls to.
-
-
Method Detail
-
request
public final Single<StreamingHttpResponse> request(HttpExecutionStrategy strategy, StreamingHttpRequest request)
Description copied from interface:StreamingHttpRequester
Send arequest
using the specifiedstrategy
.- Specified by:
request
in interfaceStreamingHttpRequester
- Parameters:
strategy
-HttpExecutionStrategy
to 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:FilterableStreamingHttpClient
Reserve aStreamingHttpConnection
based on providedHttpRequestMetaData
.- Specified by:
reserveConnection
in interfaceFilterableStreamingHttpClient
- Parameters:
strategy
-HttpExecutionStrategy
to use.metaData
- Allows the underlying layers to know whatStreamingHttpConnection
s are valid to reserve for futurerequests
with the sameHttpRequestMetaData
. For example this may provide some insight into shard or other info.- Returns:
- a
Single
that provides theReservedStreamingHttpConnection
upon completion.
-
executionContext
public HttpExecutionContext executionContext()
Description copied from interface:StreamingHttpRequester
Get theHttpExecutionContext
used 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:
executionContext
in interfaceStreamingHttpRequester
- Returns:
- the
HttpExecutionContext
used during construction of this object.
-
httpResponseFactory
public StreamingHttpResponseFactory httpResponseFactory()
Description copied from interface:StreamingHttpRequester
Get aStreamingHttpResponseFactory
.- Specified by:
httpResponseFactory
in interfaceStreamingHttpRequester
- Returns:
- a
StreamingHttpResponseFactory
.
-
onClose
public Completable onClose()
Description copied from interface:ListenableAsyncCloseable
Returns aCompletable
that is notified once theListenableAsyncCloseable
was closed.- Specified by:
onClose
in interfaceListenableAsyncCloseable
- Returns:
- the
Completable
that is notified on close.
-
closeAsync
public Completable closeAsync()
Description copied from interface:AsyncCloseable
Used to close/shutdown a resource.- Specified by:
closeAsync
in interfaceAsyncCloseable
- Returns:
- A
Completable
that is notified once the close is complete.
-
closeAsyncGracefully
public Completable closeAsyncGracefully()
Description copied from interface:AsyncCloseable
Used 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:
closeAsyncGracefully
in interfaceAsyncCloseable
- Returns:
- A
Completable
that is notified once the close is complete.
-
newRequest
public StreamingHttpRequest newRequest(HttpRequestMethod method, java.lang.String requestTarget)
Description copied from interface:StreamingHttpRequestFactory
Create a newHttpRequestFactory
.- Specified by:
newRequest
in interfaceStreamingHttpRequestFactory
- Parameters:
method
- TheHttpRequestMethod
.requestTarget
- The request target.- Returns:
- a new
HttpRequestFactory
.
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
delegate
protected final FilterableStreamingHttpClient delegate()
Get theFilterableStreamingHttpClient
this method delegates to.- Returns:
- the
FilterableStreamingHttpClient
this 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 providedStreamingHttpRequester
on which to callStreamingHttpRequester.request(HttpExecutionStrategy, StreamingHttpRequest)
.- Parameters:
delegate
- TheStreamingHttpRequester
to delegate requests to.strategy
- TheHttpExecutionStrategy
to use for executing the request.request
- The request to delegate.- Returns:
- the response.
-
-