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 pollingNameResolverimplementation that supports callingRetryingNameResolver.ResolutionResultListeners with the outcome of each resolution.The
NameResolverused with this
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) classRetryingNameResolver.DelayedNameResolverRefresh(package private) classRetryingNameResolver.ResolutionResultListenerSimple callback class to store inNameResolver.ResolutionResultattributes so that ManagedChannel can indicate if the resolved addresses were accepted.private classRetryingNameResolver.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_KEYprivate NameResolverretriedNameResolverprivate RetrySchedulerretrySchedulerprivate SynchronizationContextsyncContext
-
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) NameResolvergetRetriedNameResolver()Used to get the underlyingNameResolverthat is getting its failed attempts retried.voidshutdown()Stops the resolution.voidstart(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- ANameResolverthat 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:NameResolverStarts 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:
startin classForwardingNameResolver- Parameters:
listener- used to receive updates on the target
-
shutdown
public void shutdown()
Description copied from class:NameResolverStops the resolution. Updates to the Listener will stop.- Overrides:
shutdownin classForwardingNameResolver
-
getRetriedNameResolver
NameResolver getRetriedNameResolver()
Used to get the underlyingNameResolverthat is getting its failed attempts retried.
-
-