Package io.grpc.xds
Class XdsNameResolver
- java.lang.Object
-
- io.grpc.NameResolver
-
- io.grpc.xds.XdsNameResolver
-
final class XdsNameResolver extends io.grpc.NameResolver
ANameResolver
for resolving gRPC target names with "xds:" scheme.Resolving a gRPC target involves contacting the control plane management server via xDS protocol to retrieve service information and produce a service config to the caller.
- See Also:
XdsNameResolverProvider
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
XdsNameResolver.ClusterRefState
private class
XdsNameResolver.ConfigSelector
private static class
XdsNameResolver.FailingConfigSelector
private class
XdsNameResolver.ResolveState
private static class
XdsNameResolver.RoutingConfig
VirtualHost-level configuration for request routing.-
Nested classes/interfaces inherited from class io.grpc.NameResolver
io.grpc.NameResolver.Args, io.grpc.NameResolver.ConfigOrError, io.grpc.NameResolver.Factory, io.grpc.NameResolver.Listener, io.grpc.NameResolver.Listener2, io.grpc.NameResolver.ResolutionResult, io.grpc.NameResolver.ResolutionResultAttr, io.grpc.NameResolver.ServiceConfigParser
-
-
Field Summary
Fields Modifier and Type Field Description private XdsNameResolverProvider.CallCounterProvider
callCounterProvider
(package private) static io.grpc.CallOptions.Key<java.lang.String>
CLUSTER_SELECTION_KEY
private java.util.concurrent.ConcurrentMap<java.lang.String,XdsNameResolver.ClusterRefState>
clusterRefs
private XdsNameResolver.ConfigSelector
configSelector
(package private) static boolean
enableTimeout
private java.lang.String
encodedServiceAuthority
private FilterRegistry
filterRegistry
private XxHash64
hashFunc
private io.grpc.NameResolver.Listener2
listener
private XdsLogger
logger
private io.grpc.InternalLogId
logId
private java.lang.String
overrideAuthority
private ThreadSafeRandom
random
private long
randomChannelId
private boolean
receivedConfig
private XdsNameResolver.ResolveState
resolveState
private XdsNameResolver.RoutingConfig
routingConfig
(package private) static io.grpc.CallOptions.Key<java.lang.Long>
RPC_HASH_KEY
private java.util.concurrent.ScheduledExecutorService
scheduler
private java.lang.String
serviceAuthority
private io.grpc.NameResolver.ServiceConfigParser
serviceConfigParser
private io.grpc.SynchronizationContext
syncContext
private java.lang.String
target
private java.lang.String
targetAuthority
private XdsClient
xdsClient
private io.grpc.internal.ObjectPool<XdsClient>
xdsClientPool
private XdsClientPoolFactory
xdsClientPoolFactory
-
Constructor Summary
Constructors Constructor Description XdsNameResolver(java.net.URI targetUri, java.lang.String name, java.lang.String overrideAuthority, io.grpc.NameResolver.ServiceConfigParser serviceConfigParser, io.grpc.SynchronizationContext syncContext, java.util.concurrent.ScheduledExecutorService scheduler, java.util.Map<java.lang.String,?> bootstrapOverride)
XdsNameResolver(java.net.URI targetUri, java.lang.String targetAuthority, java.lang.String name, java.lang.String overrideAuthority, io.grpc.NameResolver.ServiceConfigParser serviceConfigParser, io.grpc.SynchronizationContext syncContext, java.util.concurrent.ScheduledExecutorService scheduler, XdsClientPoolFactory xdsClientPoolFactory, ThreadSafeRandom random, FilterRegistry filterRegistry, java.util.Map<java.lang.String,?> bootstrapOverride)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static io.grpc.ClientInterceptor
combineInterceptors(java.util.List<io.grpc.ClientInterceptor> interceptors)
private static java.lang.String
expandPercentS(java.lang.String template, java.lang.String replacement)
(package private) static java.util.Map<java.lang.String,?>
generateServiceConfigWithMethodConfig(java.lang.Long timeoutNano, VirtualHost.Route.RouteAction.RetryPolicy retryPolicy)
private static java.lang.String
getHeaderValue(io.grpc.Metadata headers, java.lang.String headerName)
java.lang.String
getServiceAuthority()
(package private) XdsClient
getXdsClient()
(package private) static boolean
matchHostName(java.lang.String hostName, java.lang.String pattern)
Returnstrue
iffhostName
matches the domain namepattern
with case-insensitive.private static java.lang.String
prefixedClusterName(java.lang.String name)
private static java.lang.String
prefixedClusterSpecifierPluginName(java.lang.String pluginName)
void
shutdown()
void
start(io.grpc.NameResolver.Listener2 listener)
private void
updateResolutionResult()
-
-
-
Field Detail
-
CLUSTER_SELECTION_KEY
static final io.grpc.CallOptions.Key<java.lang.String> CLUSTER_SELECTION_KEY
-
RPC_HASH_KEY
static final io.grpc.CallOptions.Key<java.lang.Long> RPC_HASH_KEY
-
enableTimeout
static boolean enableTimeout
-
logId
private final io.grpc.InternalLogId logId
-
logger
private final XdsLogger logger
-
targetAuthority
@Nullable private final java.lang.String targetAuthority
-
target
private final java.lang.String target
-
serviceAuthority
private final java.lang.String serviceAuthority
-
encodedServiceAuthority
private final java.lang.String encodedServiceAuthority
-
overrideAuthority
private final java.lang.String overrideAuthority
-
serviceConfigParser
private final io.grpc.NameResolver.ServiceConfigParser serviceConfigParser
-
syncContext
private final io.grpc.SynchronizationContext syncContext
-
scheduler
private final java.util.concurrent.ScheduledExecutorService scheduler
-
xdsClientPoolFactory
private final XdsClientPoolFactory xdsClientPoolFactory
-
random
private final ThreadSafeRandom random
-
filterRegistry
private final FilterRegistry filterRegistry
-
hashFunc
private final XxHash64 hashFunc
-
clusterRefs
private final java.util.concurrent.ConcurrentMap<java.lang.String,XdsNameResolver.ClusterRefState> clusterRefs
-
configSelector
private final XdsNameResolver.ConfigSelector configSelector
-
randomChannelId
private final long randomChannelId
-
routingConfig
private volatile XdsNameResolver.RoutingConfig routingConfig
-
listener
private io.grpc.NameResolver.Listener2 listener
-
xdsClientPool
private io.grpc.internal.ObjectPool<XdsClient> xdsClientPool
-
xdsClient
private XdsClient xdsClient
-
callCounterProvider
private XdsNameResolverProvider.CallCounterProvider callCounterProvider
-
resolveState
private XdsNameResolver.ResolveState resolveState
-
receivedConfig
private boolean receivedConfig
-
-
Constructor Detail
-
XdsNameResolver
XdsNameResolver(java.net.URI targetUri, java.lang.String name, @Nullable java.lang.String overrideAuthority, io.grpc.NameResolver.ServiceConfigParser serviceConfigParser, io.grpc.SynchronizationContext syncContext, java.util.concurrent.ScheduledExecutorService scheduler, @Nullable java.util.Map<java.lang.String,?> bootstrapOverride)
-
XdsNameResolver
XdsNameResolver(java.net.URI targetUri, @Nullable java.lang.String targetAuthority, java.lang.String name, @Nullable java.lang.String overrideAuthority, io.grpc.NameResolver.ServiceConfigParser serviceConfigParser, io.grpc.SynchronizationContext syncContext, java.util.concurrent.ScheduledExecutorService scheduler, XdsClientPoolFactory xdsClientPoolFactory, ThreadSafeRandom random, FilterRegistry filterRegistry, @Nullable java.util.Map<java.lang.String,?> bootstrapOverride)
-
-
Method Detail
-
getServiceAuthority
public java.lang.String getServiceAuthority()
- Specified by:
getServiceAuthority
in classio.grpc.NameResolver
-
start
public void start(io.grpc.NameResolver.Listener2 listener)
- Overrides:
start
in classio.grpc.NameResolver
-
expandPercentS
private static java.lang.String expandPercentS(java.lang.String template, java.lang.String replacement)
-
shutdown
public void shutdown()
- Specified by:
shutdown
in classio.grpc.NameResolver
-
generateServiceConfigWithMethodConfig
static java.util.Map<java.lang.String,?> generateServiceConfigWithMethodConfig(@Nullable java.lang.Long timeoutNano, @Nullable VirtualHost.Route.RouteAction.RetryPolicy retryPolicy)
-
getXdsClient
XdsClient getXdsClient()
-
updateResolutionResult
private void updateResolutionResult()
-
matchHostName
static boolean matchHostName(java.lang.String hostName, java.lang.String pattern)
Returnstrue
iffhostName
matches the domain namepattern
with case-insensitive.Wildcard pattern rules:
- A single asterisk (*) matches any domain.
- Asterisk (*) is only permitted in the left-most or the right-most part of the pattern, but not both.
-
combineInterceptors
private static io.grpc.ClientInterceptor combineInterceptors(java.util.List<io.grpc.ClientInterceptor> interceptors)
-
getHeaderValue
@Nullable private static java.lang.String getHeaderValue(io.grpc.Metadata headers, java.lang.String headerName)
-
prefixedClusterName
private static java.lang.String prefixedClusterName(java.lang.String name)
-
prefixedClusterSpecifierPluginName
private static java.lang.String prefixedClusterSpecifierPluginName(java.lang.String pluginName)
-
-