Package io.grpc

Class NameResolver.Args

  • Enclosing class:
    NameResolver

    @ExperimentalApi("https://github.com/grpc/grpc-java/issues/1770")
    public static final class NameResolver.Args
    extends Object
    Information that a NameResolver.Factory uses to create a NameResolver.

    Args applicable to all NameResolvers are defined here using ordinary setters and getters. This container can also hold externally-defined "custom" args that aren't so widely useful or that would be inappropriate dependencies for this low level API. See getArg(io.grpc.NameResolver.Args.Key<T>) for more.

    Note this class overrides neither equals() nor hashCode().

    Since:
    1.21.0
    • Method Detail

      • getDefaultPort

        public int getDefaultPort()
        The port number used in case the target or the underlying naming system doesn't provide a port number.
        Since:
        1.21.0
      • getProxyDetector

        public ProxyDetector getProxyDetector()
        If the NameResolver wants to support proxy, it should inquire this ProxyDetector. See documentation on ProxyDetector about how proxies work in gRPC.
        Since:
        1.21.0
      • getScheduledExecutorService

        @ExperimentalApi("https://github.com/grpc/grpc-java/issues/6454")
        public ScheduledExecutorService getScheduledExecutorService()
        Returns a ScheduledExecutorService for scheduling delayed tasks.

        This service is a shared resource and is only meant for quick tasks. DO NOT block or run time-consuming tasks.

        The returned service doesn't support shutdown() and shutdownNow(). They will throw if called.

        Since:
        1.26.0
      • getArg

        @Nullable
        public <T> T getArg​(NameResolver.Args.Key<T> key)
        Returns the value of a custom arg named 'key', or null if it's not set.

        While ordinary NameResolver.Args should be universally useful and meaningful, custom arguments can apply just to resolvers of a certain URI scheme, just to resolvers producing a particular type of SocketAddress, or even an individual NameResolver subclass. Custom args are identified by an instance of NameResolver.Args.Key which should be a constant defined in a java package and class appropriate for the argument's scope.

        NameResolver.Args are normally reserved for information in *support* of name resolution, not the name to be resolved itself. However, there are rare cases where all or part of the target name can't be represented by any standard URI scheme or can't be encoded as a String at all. Custom args, in contrast, can hold arbitrary Java types, making them a useful work around in these cases.

        Custom args can also be used simply to avoid adding inappropriate deps to the low level io.grpc package.

      • getChannelLogger

        @ExperimentalApi("https://github.com/grpc/grpc-java/issues/6438")
        public ChannelLogger getChannelLogger()
        Returns the ChannelLogger for the Channel served by this NameResolver.
        Since:
        1.26.0
      • getOffloadExecutor

        @Nullable
        public Executor getOffloadExecutor()
        Returns the Executor on which this resolver should execute long-running or I/O bound work. Null if no Executor was set.
        Since:
        1.25.0
      • getMetricRecorder

        @Nullable
        public io.grpc.MetricRecorder getMetricRecorder()
        Returns the MetricRecorder that the channel uses to record metrics.
      • toBuilder

        public NameResolver.Args.Builder toBuilder()
        Returns a builder with the same initial values as this object.
        Since:
        1.21.0