Class ForwardingManagedChannel
- Direct Known Subclasses:
ManagedChannelOrphanWrapper
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionThe authority of the destination this channel connects to.boolean
awaitTermination
(long timeout, TimeUnit unit) Waits for the channel to become terminated, giving up if the timeout is reached.void
Invoking this method moves the channel into the IDLE state and triggers tear-down of the channel's name resolver and load balancer, while still allowing on-going RPCs on the channel to continue.getState
(boolean requestConnection) Gets the current connectivity state.boolean
Returns whether the channel is shutdown.boolean
Returns whether the channel is terminated.<RequestT,
ResponseT>
ClientCall<RequestT, ResponseT> newCall
(MethodDescriptor<RequestT, ResponseT> methodDescriptor, CallOptions callOptions) Create aClientCall
to the remote operation specified by the givenMethodDescriptor
.void
notifyWhenStateChanged
(ConnectivityState source, Runnable callback) Registers a one-off callback that will be run if the connectivity state of the channel diverges from the givensource
, which is typically what has just been returned byManagedChannel.getState(boolean)
.void
For subchannels that are in TRANSIENT_FAILURE state, short-circuit the backoff timer and make them reconnect immediately.shutdown()
Initiates an orderly shutdown in which preexisting calls continue but new calls are immediately cancelled.Initiates a forceful shutdown in which preexisting and new calls are cancelled.toString()
-
Field Details
-
delegate
-
-
Constructor Details
-
ForwardingManagedChannel
ForwardingManagedChannel(ManagedChannel delegate)
-
-
Method Details
-
shutdown
Description copied from class:ManagedChannel
Initiates an orderly shutdown in which preexisting calls continue but new calls are immediately cancelled.- Specified by:
shutdown
in classManagedChannel
- Returns:
- this
-
isShutdown
public boolean isShutdown()Description copied from class:ManagedChannel
Returns whether the channel is shutdown. Shutdown channels immediately cancel any new calls, but may still have some calls being processed.- Specified by:
isShutdown
in classManagedChannel
- See Also:
-
isTerminated
public boolean isTerminated()Description copied from class:ManagedChannel
Returns whether the channel is terminated. Terminated channels have no running calls and relevant resources released (like TCP connections).- Specified by:
isTerminated
in classManagedChannel
- See Also:
-
shutdownNow
Description copied from class:ManagedChannel
Initiates a forceful shutdown in which preexisting and new calls are cancelled. Although forceful, the shutdown process is still not instantaneous;ManagedChannel.isTerminated()
will likely returnfalse
immediately after this method returns.- Specified by:
shutdownNow
in classManagedChannel
- Returns:
- this
-
awaitTermination
Description copied from class:ManagedChannel
Waits for the channel to become terminated, giving up if the timeout is reached.- Specified by:
awaitTermination
in classManagedChannel
- Returns:
- whether the channel is terminated, as would be done by
ManagedChannel.isTerminated()
. - Throws:
InterruptedException
-
newCall
public <RequestT,ResponseT> ClientCall<RequestT,ResponseT> newCall(MethodDescriptor<RequestT, ResponseT> methodDescriptor, CallOptions callOptions) Description copied from class:Channel
Create aClientCall
to the remote operation specified by the givenMethodDescriptor
. The returnedClientCall
does not trigger any remote behavior untilClientCall.start(ClientCall.Listener, Metadata)
is invoked.- Specified by:
newCall
in classChannel
- Parameters:
methodDescriptor
- describes the name and parameter types of the operation to call.callOptions
- runtime options to be applied to this call.- Returns:
- a
ClientCall
bound to the specified method.
-
authority
Description copied from class:Channel
The authority of the destination this channel connects to. Typically this is in the formathost:port
. -
getState
Description copied from class:ManagedChannel
Gets the current connectivity state. Note the result may soon become outdated.Note that the core library did not provide an implementation of this method until v1.6.1.
- Overrides:
getState
in classManagedChannel
- Parameters:
requestConnection
- iftrue
, the channel will try to make a connection if it is currently IDLE
-
notifyWhenStateChanged
Description copied from class:ManagedChannel
Registers a one-off callback that will be run if the connectivity state of the channel diverges from the givensource
, which is typically what has just been returned byManagedChannel.getState(boolean)
. If the states are already different, the callback will be called immediately. The callback is run in the same executor that runs Call listeners.There is an inherent race between the notification to
callback
and any call togetState()
. There is a similar race betweengetState()
and a call tonotifyWhenStateChanged()
. The state can change during those races, so there is not a way to see every state transition. "Transitions" to the same state are possible, because intermediate states may not have been observed. The API is only reliable in tracking the current state.Note that the core library did not provide an implementation of this method until v1.6.1.
- Overrides:
notifyWhenStateChanged
in classManagedChannel
- Parameters:
source
- the assumed current state, typically just returned byManagedChannel.getState(boolean)
callback
- the one-off callback
-
resetConnectBackoff
public void resetConnectBackoff()Description copied from class:ManagedChannel
For subchannels that are in TRANSIENT_FAILURE state, short-circuit the backoff timer and make them reconnect immediately. May also attempt to invokeNameResolver.refresh()
.This is primarily intended for Android users, where the network may experience frequent temporary drops. Rather than waiting for gRPC's name resolution and reconnect timers to elapse before reconnecting, the app may use this method as a mechanism to notify gRPC that the network is now available and a reconnection attempt may occur immediately.
No-op if not supported by the implementation.
- Overrides:
resetConnectBackoff
in classManagedChannel
-
enterIdle
public void enterIdle()Description copied from class:ManagedChannel
Invoking this method moves the channel into the IDLE state and triggers tear-down of the channel's name resolver and load balancer, while still allowing on-going RPCs on the channel to continue. New RPCs on the channel will trigger creation of a new connection.This is primarily intended for Android users when a device is transitioning from a cellular to a wifi connection. The OS will issue a notification that a new network (wifi) has been made the default, but for approximately 30 seconds the device will maintain both the cellular and wifi connections. Apps may invoke this method to ensure that new RPCs are created using the new default wifi network, rather than the soon-to-be-disconnected cellular network.
No-op if not supported by implementation.
- Overrides:
enterIdle
in classManagedChannel
-
toString
-