Package io.grpc.internal
Class RetryingNameResolver
- java.lang.Object
-
- io.grpc.NameResolver
-
- io.grpc.internal.ForwardingNameResolver
-
- io.grpc.internal.RetryingNameResolver
-
final class RetryingNameResolver extends ForwardingNameResolver
This wrapper class can add retry capability to any pollingNameResolver
implementation that supports callingRetryingNameResolver.ResolutionResultListener
s with the outcome of each resolution.The
NameResolver
used with this
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) class
RetryingNameResolver.DelayedNameResolverRefresh
(package private) class
RetryingNameResolver.ResolutionResultListener
Simple callback class to store inNameResolver.ResolutionResult
attributes so that ManagedChannel can indicate if the resolved addresses were accepted.private class
RetryingNameResolver.RetryingListener
-
Nested classes/interfaces inherited from class io.grpc.NameResolver
NameResolver.Args, NameResolver.ConfigOrError, NameResolver.Factory, NameResolver.Listener, NameResolver.Listener2, NameResolver.ResolutionResult, NameResolver.ResolutionResultAttr, NameResolver.ServiceConfigParser
-
-
Field Summary
Fields Modifier and Type Field Description (package private) static Attributes.Key<RetryingNameResolver.ResolutionResultListener>
RESOLUTION_RESULT_LISTENER_KEY
private NameResolver
retriedNameResolver
private RetryScheduler
retryScheduler
private SynchronizationContext
syncContext
-
Constructor Summary
Constructors Constructor Description RetryingNameResolver(NameResolver retriedNameResolver, RetryScheduler retryScheduler, SynchronizationContext syncContext)
Creates a newRetryingNameResolver
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) NameResolver
getRetriedNameResolver()
Used to get the underlyingNameResolver
that is getting its failed attempts retried.void
shutdown()
Stops the resolution.void
start(NameResolver.Listener2 listener)
Starts the resolution.-
Methods inherited from class io.grpc.internal.ForwardingNameResolver
getServiceAuthority, refresh, start, toString
-
-
-
-
Field Detail
-
retriedNameResolver
private final NameResolver retriedNameResolver
-
retryScheduler
private final RetryScheduler retryScheduler
-
syncContext
private final SynchronizationContext syncContext
-
RESOLUTION_RESULT_LISTENER_KEY
static final Attributes.Key<RetryingNameResolver.ResolutionResultListener> RESOLUTION_RESULT_LISTENER_KEY
-
-
Constructor Detail
-
RetryingNameResolver
RetryingNameResolver(NameResolver retriedNameResolver, RetryScheduler retryScheduler, SynchronizationContext syncContext)
Creates a newRetryingNameResolver
.- Parameters:
retriedNameResolver
- ANameResolver
that will have failed attempt retried.retryScheduler
- Used to schedule the retry attempts.
-
-
Method Detail
-
start
public void start(NameResolver.Listener2 listener)
Description copied from class:NameResolver
Starts the resolution. The method is not supposed to throw any exceptions. That might cause the Channel that the name resolver is serving to crash. Errors should be propagated throughNameResolver.Listener2.onError(io.grpc.Status)
.An instance may not be started more than once, by any overload of this method, even after an intervening call to
NameResolver.shutdown()
.- Overrides:
start
in classForwardingNameResolver
- Parameters:
listener
- used to receive updates on the target
-
shutdown
public void shutdown()
Description copied from class:NameResolver
Stops the resolution. Updates to the Listener will stop.- Overrides:
shutdown
in classForwardingNameResolver
-
getRetriedNameResolver
NameResolver getRetriedNameResolver()
Used to get the underlyingNameResolver
that is getting its failed attempts retried.
-
-