Package io.servicetalk.http.utils
Class TimeoutHttpServiceFilter
- java.lang.Object
-
- io.servicetalk.http.utils.TimeoutHttpServiceFilter
-
- All Implemented Interfaces:
HttpExecutionStrategyInfluencer
,StreamingHttpServiceFilterFactory
public final class TimeoutHttpServiceFilter extends java.lang.Object implements StreamingHttpServiceFilterFactory
A filter to enable timeouts for HTTP requests on the server-side.The timeout applies either the response metadata (headers) completion or the complete reception of the response payload body and optional trailers.
The order with which this filter is applied may be highly significant. For example, appending it before a retry filter would have different results than applying it after the retry filter; timeout would apply for all retries vs timeout per retry.
-
-
Constructor Summary
Constructors Constructor Description TimeoutHttpServiceFilter(TimeoutFromRequest timeoutForRequest, boolean fullRequestResponse)
Creates a new instance.TimeoutHttpServiceFilter(TimeoutFromRequest timeoutForRequest, boolean fullRequestResponse, Executor timeoutExecutor)
Creates a new instance.TimeoutHttpServiceFilter(java.time.Duration duration)
Creates a new instance which requires only that the response metadata be received before the timeout.TimeoutHttpServiceFilter(java.time.Duration duration, boolean fullRequestResponse)
Creates a new instance.TimeoutHttpServiceFilter(java.time.Duration duration, boolean fullRequestResponse, Executor timeoutExecutor)
Creates a new instance.TimeoutHttpServiceFilter(java.time.Duration duration, Executor timeoutExecutor)
Creates a new instance which requires only that the response metadata be received before the timeout.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description StreamingHttpServiceFilter
create(StreamingHttpService service)
Create aStreamingHttpServiceFilter
using the providedStreamingHttpService
.HttpExecutionStrategy
influenceStrategy(HttpExecutionStrategy strategy)
Optionally modify the passedHttpExecutionStrategy
to a newHttpExecutionStrategy
that suits thisHttpExecutionStrategyInfluencer
.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface io.servicetalk.http.api.StreamingHttpServiceFilterFactory
append
-
-
-
-
Constructor Detail
-
TimeoutHttpServiceFilter
public TimeoutHttpServiceFilter(java.time.Duration duration)
Creates a new instance which requires only that the response metadata be received before the timeout.- Parameters:
duration
- the timeoutDuration
-
TimeoutHttpServiceFilter
public TimeoutHttpServiceFilter(java.time.Duration duration, Executor timeoutExecutor)
Creates a new instance which requires only that the response metadata be received before the timeout.- Parameters:
duration
- the timeoutDuration
timeoutExecutor
- theExecutor
to use for managing the timer notifications
-
TimeoutHttpServiceFilter
public TimeoutHttpServiceFilter(java.time.Duration duration, boolean fullRequestResponse)
Creates a new instance.- Parameters:
duration
- the timeoutDuration
fullRequestResponse
- iftrue
then timeout is for full request/response transaction otherwise only the response metadata must arrive before the timeout
-
TimeoutHttpServiceFilter
public TimeoutHttpServiceFilter(java.time.Duration duration, boolean fullRequestResponse, Executor timeoutExecutor)
Creates a new instance.- Parameters:
duration
- the timeoutDuration
fullRequestResponse
- iftrue
then timeout is for full request/response transaction otherwise only the response metadata must arrive before the timeouttimeoutExecutor
- theExecutor
to use for managing the timer notifications
-
TimeoutHttpServiceFilter
public TimeoutHttpServiceFilter(TimeoutFromRequest timeoutForRequest, boolean fullRequestResponse)
Creates a new instance.- Parameters:
timeoutForRequest
- function for extracting timeout from request which may also determine the timeout using other sources. If no timeout is to be applied then the function should returnnull
fullRequestResponse
- iftrue
then timeout is for full request/response transaction otherwise only the response metadata must arrive before the timeout
-
TimeoutHttpServiceFilter
public TimeoutHttpServiceFilter(TimeoutFromRequest timeoutForRequest, boolean fullRequestResponse, Executor timeoutExecutor)
Creates a new instance.- Parameters:
timeoutForRequest
- function for extracting timeout from request which may also determine the timeout using other sources. If no timeout is to be applied then the function should returnnull
fullRequestResponse
- iftrue
then timeout is for full request/response transaction otherwise only the response metadata must arrive before the timeouttimeoutExecutor
- theExecutor
to use for managing the timer notifications
-
-
Method Detail
-
create
public StreamingHttpServiceFilter create(StreamingHttpService service)
Description copied from interface:StreamingHttpServiceFilterFactory
Create aStreamingHttpServiceFilter
using the providedStreamingHttpService
.- Specified by:
create
in interfaceStreamingHttpServiceFilterFactory
- Parameters:
service
-StreamingHttpService
to filter- Returns:
StreamingHttpServiceFilter
using the providedStreamingHttpService
.
-
influenceStrategy
public final HttpExecutionStrategy influenceStrategy(HttpExecutionStrategy strategy)
Description copied from interface:HttpExecutionStrategyInfluencer
Optionally modify the passedHttpExecutionStrategy
to a newHttpExecutionStrategy
that suits thisHttpExecutionStrategyInfluencer
.- Specified by:
influenceStrategy
in interfaceHttpExecutionStrategyInfluencer
- Parameters:
strategy
-HttpExecutionStrategy
to influence.- Returns:
HttpExecutionStrategy
that suits thisHttpExecutionStrategyInfluencer
-
-