Package io.servicetalk.http.utils
Class IdleTimeoutConnectionFilter
java.lang.Object
io.servicetalk.http.utils.IdleTimeoutConnectionFilter
- All Implemented Interfaces:
HttpExecutionStrategyInfluencer
,StreamingHttpConnectionFilterFactory
,ExecutionStrategyInfluencer<HttpExecutionStrategy>
public final class IdleTimeoutConnectionFilter
extends Object
implements StreamingHttpConnectionFilterFactory
A connection-level filter that closes idle connections.
This filter is an alternative to ServiceTalkSocketOptions.IDLE_TIMEOUT
at L7 layer. It helps to close idle
connections that were not used to send any requests for the specified duration without affecting any in-flight
requests.
- Connections that have in-flight requests are considered "in-use".
- If response payload body was not consumed, the connection is still considered "in-use" and does not start counting the timer.
- A single connection can not process more than
Integer.MAX_VALUE
concurrent requests. - If filter is configured with
Duration.ZERO
timeout, it disables the timeout.
-
Constructor Summary
ConstructorDescriptionIdleTimeoutConnectionFilter
(Duration timeout) Creates a new instance.IdleTimeoutConnectionFilter
(Duration timeout, Executor timeoutExecutor) Creates a new instance. -
Method Summary
Modifier and TypeMethodDescriptioncreate
(FilterableStreamingHttpConnection connection) Create aStreamingHttpConnectionFilter
using the providedFilterableStreamingHttpConnection
.Return anExecutionStrategy
that describes the offloads required by the influencer.toString()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface io.servicetalk.http.api.HttpExecutionStrategyInfluencer
influenceStrategy
-
Constructor Details
-
IdleTimeoutConnectionFilter
Creates a new instance.- Parameters:
timeout
- timeout duration after which an idle connection is closed, ifDuration.ZERO
the timeout is disabled
-
IdleTimeoutConnectionFilter
Creates a new instance.- Parameters:
timeout
- timeout duration after which an idle connection is closed, ifDuration.ZERO
the timeout is disabledtimeoutExecutor
- theExecutor
to use for scheduling the timer notifications
-
-
Method Details
-
create
Description copied from interface:StreamingHttpConnectionFilterFactory
Create aStreamingHttpConnectionFilter
using the providedFilterableStreamingHttpConnection
.- Specified by:
create
in interfaceStreamingHttpConnectionFilterFactory
- Parameters:
connection
-FilterableStreamingHttpConnection
to filter- Returns:
StreamingHttpConnectionFilter
using the providedFilterableStreamingHttpConnection
.
-
requiredOffloads
Description copied from interface:HttpExecutionStrategyInfluencer
Return anExecutionStrategy
that describes the offloads required by the influencer.The provided default implementation requests offloading of all operations. Implementations that require no offloading should be careful to return
HttpExecutionStrategies.offloadNone()
rather thanHttpExecutionStrategies.offloadNever()
. Implementations should avoid returningHttpExecutionStrategies.defaultStrategy()
, instead returning the strategy they require orHttpExecutionStrategies.offloadAll()
if offloading for all paths is required (safe default).- Specified by:
requiredOffloads
in interfaceExecutionStrategyInfluencer<HttpExecutionStrategy>
- Specified by:
requiredOffloads
in interfaceHttpExecutionStrategyInfluencer
- Returns:
- the
ExecutionStrategy
required by the influencer.
-
toString
-