Class DelegatingFilterableStreamingHttpLoadBalancedConnection
- All Implemented Interfaces:
LoadBalancedConnection
,RequestConcurrencyController
,ReservableRequestConcurrencyController
,ScoreSupplier
,AsyncCloseable
,ListenableAsyncCloseable
,GracefulAutoCloseable
,FilterableReservedStreamingHttpConnection
,FilterableStreamingHttpConnection
,FilterableStreamingHttpLoadBalancedConnection
,ReservedStreamingHttpConnection
,StreamingHttpConnection
,StreamingHttpRequester
,StreamingHttpRequestFactory
,AutoCloseable
FilterableStreamingHttpLoadBalancedConnection
that delegates all methods.-
Nested Class Summary
Nested classes/interfaces inherited from interface io.servicetalk.client.api.RequestConcurrencyController
RequestConcurrencyController.Result
-
Constructor Summary
ConstructorDescriptionDelegatingFilterableStreamingHttpLoadBalancedConnection
(FilterableStreamingHttpLoadBalancedConnection delegate) Create a new instance. -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Used to close/shutdown a resource.Used to close/shutdown a resource, similar toAsyncCloseable.closeAsync()
, but attempts to cleanup state before abruptly closing.void
Used to close/shutdown a resource, similar toAutoCloseable.close()
, but attempts to cleanup state before abruptly closing.Create a newHttpRequestMethod.CONNECT
request.Get theHttpConnectionContext
.Create a newHttpRequestMethod.DELETE
request.Get theHttpExecutionContext
used during construction of this object.Create a newHttpRequestMethod.GET
request.Create a newHttpRequestMethod.HEAD
request.Get aStreamingHttpResponseFactory
.newRequest
(HttpRequestMethod method, String requestTarget) Create a newHttpRequestFactory
.onClose()
Returns aCompletable
that is notified once theListenableAsyncCloseable
was closed.Returns aCompletable
that is notified when closing begins.Create a newHttpRequestMethod.OPTIONS
request.Create a newHttpRequestMethod.PATCH
request.Create a newHttpRequestMethod.POST
request.Create a newHttpRequestMethod.PUT
request.Must be called (and subscribed to) to signify the reservation has completed afterReservableRequestConcurrencyController.tryReserve()
.request
(StreamingHttpRequest request) Send arequest
.void
Must be called afterRequestConcurrencyController.tryRequest()
to signify the request has completed.int
score()
Returns the current score of a resource.toString()
Create a newHttpRequestMethod.TRACE
request.<T> Publisher<? extends T>
transportEventStream
(HttpEventKey<T> eventKey) Returns aPublisher
that gives the current value of a transport event as well as subsequent changes to the event value as long as thePublisherSource.Subscriber
has expressed enough demand.Attempts to reserve a connection for a single request, needs to be followed byRequestConcurrencyController.requestFinished()
.boolean
Attempts to reserve a connection for exclusive use untilReservableRequestConcurrencyController.releaseAsync()
is called.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.FilterableStreamingHttpLoadBalancedConnection
asBlockingConnection, asBlockingStreamingConnection, asConnection
-
Constructor Details
-
DelegatingFilterableStreamingHttpLoadBalancedConnection
public DelegatingFilterableStreamingHttpLoadBalancedConnection(FilterableStreamingHttpLoadBalancedConnection delegate) Create a new instance.- Parameters:
delegate
- The instance to delegate to.
-
-
Method Details
-
tryRequest
Description copied from interface:RequestConcurrencyController
Attempts to reserve a connection for a single request, needs to be followed byRequestConcurrencyController.requestFinished()
.- Specified by:
tryRequest
in interfaceLoadBalancedConnection
- Specified by:
tryRequest
in interfaceRequestConcurrencyController
- Returns:
RequestConcurrencyController.Result.Accepted
if this connection is available and reserved for performing a single request.
-
requestFinished
public void requestFinished()Description copied from interface:RequestConcurrencyController
Must be called afterRequestConcurrencyController.tryRequest()
to signify the request has completed. This method should be called no more than once for each call toRequestConcurrencyController.tryRequest()
.Generally called from a
Publisher.beforeFinally(Runnable)
after aRequestConcurrencyController.tryRequest()
.- Specified by:
requestFinished
in interfaceLoadBalancedConnection
- Specified by:
requestFinished
in interfaceRequestConcurrencyController
-
tryReserve
public boolean tryReserve()Description copied from interface:ReservableRequestConcurrencyController
Attempts to reserve a connection for exclusive use untilReservableRequestConcurrencyController.releaseAsync()
is called.- Specified by:
tryReserve
in interfaceLoadBalancedConnection
- Specified by:
tryReserve
in interfaceReservableRequestConcurrencyController
- Returns:
true
if this connection is available and reserved for performing a single request.
-
score
public int score()Description copied from interface:ScoreSupplier
Returns the current score of a resource.LoadBalancer
s prefer resources with a higher score.- Specified by:
score
in interfaceScoreSupplier
- Returns:
- the score
-
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
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.
-
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.
-
onClosing
Description copied from interface:ListenableAsyncCloseable
Returns aCompletable
that is notified when closing begins.Closing begin might be when a close operation is initiated locally (e.g. subscribing to
AsyncCloseable.closeAsync()
) or it could also be a transport event received from a remote peer (e.g. read aconnection: close
header).For backwards compatibility this method maybe functionally equivalent to
ListenableAsyncCloseable.onClose()
. Therefore, provides a best-effort leading edge notification of closing, but may fall back to notification on trailing edge.The goal of this method is often to notify asap when closing so this method may not be offloaded and care must be taken to avoid blocking if subscribing to the return
Completable
.- Specified by:
onClosing
in interfaceListenableAsyncCloseable
- Returns:
- a
Completable
that is notified when closing begins.
-
connectionContext
Description copied from interface:FilterableStreamingHttpConnection
Get theHttpConnectionContext
.- Specified by:
connectionContext
in interfaceFilterableStreamingHttpConnection
- Returns:
- the
HttpConnectionContext
.
-
transportEventStream
Description copied from interface:FilterableStreamingHttpConnection
Returns aPublisher
that gives the current value of a transport event as well as subsequent changes to the event value as long as thePublisherSource.Subscriber
has expressed enough demand.This is designed for events produced by the transport, and consumed by filters interested in transport behavior which is not directly involved in the data path.
- Specified by:
transportEventStream
in interfaceFilterableStreamingHttpConnection
- Type Parameters:
T
- Type of the event value.- Parameters:
eventKey
- Name of the event to fetch.- Returns:
Publisher
for the event values.
-
close
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceStreamingHttpConnection
- Throws:
Exception
-
closeGracefully
Description copied from interface:GracefulAutoCloseable
Used to close/shutdown a resource, similar toAutoCloseable.close()
, 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 toAutoCloseable.close()
.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
AutoCloseable.close()
.- Specified by:
closeGracefully
in interfaceGracefulAutoCloseable
- Specified by:
closeGracefully
in interfaceStreamingHttpConnection
- Throws:
Exception
- if graceful closure failed.
-
releaseAsync
Description copied from interface:ReservableRequestConcurrencyController
Must be called (and subscribed to) to signify the reservation has completed afterReservableRequestConcurrencyController.tryReserve()
.- Specified by:
releaseAsync
in interfaceFilterableReservedStreamingHttpConnection
- Specified by:
releaseAsync
in interfaceFilterableStreamingHttpLoadBalancedConnection
- Specified by:
releaseAsync
in interfaceLoadBalancedConnection
- Specified by:
releaseAsync
in interfaceReservableRequestConcurrencyController
- Returns:
- a
Completable
for the release.
-
newRequest
Description copied from interface:StreamingHttpRequestFactory
Create a newHttpRequestFactory
.- Specified by:
newRequest
in interfaceStreamingHttpRequestFactory
- Parameters:
method
- TheHttpRequestMethod
.requestTarget
- The request target.- Returns:
- a new
HttpRequestFactory
.
-
get
Description copied from interface:StreamingHttpRequestFactory
Create a newHttpRequestMethod.GET
request.- Specified by:
get
in interfaceStreamingHttpRequestFactory
- Parameters:
requestTarget
- The request target.- Returns:
- a new
HttpRequestMethod.GET
request.
-
post
Description copied from interface:StreamingHttpRequestFactory
Create a newHttpRequestMethod.POST
request.- Specified by:
post
in interfaceStreamingHttpRequestFactory
- Parameters:
requestTarget
- The request target.- Returns:
- a new
HttpRequestMethod.POST
request.
-
put
Description copied from interface:StreamingHttpRequestFactory
Create a newHttpRequestMethod.PUT
request.- Specified by:
put
in interfaceStreamingHttpRequestFactory
- Parameters:
requestTarget
- The request target.- Returns:
- a new
HttpRequestMethod.PUT
request.
-
options
Description copied from interface:StreamingHttpRequestFactory
Create a newHttpRequestMethod.OPTIONS
request.- Specified by:
options
in interfaceStreamingHttpRequestFactory
- Parameters:
requestTarget
- The request target.- Returns:
- a new
HttpRequestMethod.OPTIONS
request.
-
head
Description copied from interface:StreamingHttpRequestFactory
Create a newHttpRequestMethod.HEAD
request.- Specified by:
head
in interfaceStreamingHttpRequestFactory
- Parameters:
requestTarget
- The request target.- Returns:
- a new
HttpRequestMethod.HEAD
request.
-
trace
Description copied from interface:StreamingHttpRequestFactory
Create a newHttpRequestMethod.TRACE
request.- Specified by:
trace
in interfaceStreamingHttpRequestFactory
- Parameters:
requestTarget
- The request target.- Returns:
- a new
HttpRequestMethod.TRACE
request.
-
delete
Description copied from interface:StreamingHttpRequestFactory
Create a newHttpRequestMethod.DELETE
request.- Specified by:
delete
in interfaceStreamingHttpRequestFactory
- Parameters:
requestTarget
- The request target.- Returns:
- a new
HttpRequestMethod.DELETE
request.
-
patch
Description copied from interface:StreamingHttpRequestFactory
Create a newHttpRequestMethod.PATCH
request.- Specified by:
patch
in interfaceStreamingHttpRequestFactory
- Parameters:
requestTarget
- The request target.- Returns:
- a new
HttpRequestMethod.PATCH
request.
-
connect
Description copied from interface:StreamingHttpRequestFactory
Create a newHttpRequestMethod.CONNECT
request.- Specified by:
connect
in interfaceStreamingHttpRequestFactory
- Parameters:
requestTarget
- The request target.- Returns:
- a new
HttpRequestMethod.CONNECT
request.
-
request
Description copied from interface:StreamingHttpRequester
Send arequest
.- Specified by:
request
in interfaceStreamingHttpRequester
- Parameters:
request
- the request to send.- Returns:
- The response.
-
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
Description copied from interface:StreamingHttpRequester
Get aStreamingHttpResponseFactory
.- Specified by:
httpResponseFactory
in interfaceStreamingHttpRequester
- Returns:
- a
StreamingHttpResponseFactory
.
-
toString
-