Class DnsNameResolver

java.lang.Object
io.grpc.NameResolver
io.grpc.internal.DnsNameResolver

public class DnsNameResolver extends NameResolver
A DNS-based NameResolver.

Each A or AAAA record emits an EquivalentAddressGroup in the list passed to NameResolver.Listener2.onResult2(ResolutionResult).

See Also:
  • Field Details

    • enableTxt

      protected static boolean enableTxt
    • addressResolver

      protected volatile DnsNameResolver.AddressResolver addressResolver
    • resolved

      protected boolean resolved
  • Constructor Details

  • Method Details

    • getServiceAuthority

      public String getServiceAuthority()
      Description copied from class: NameResolver
      Returns the authority used to authenticate connections to servers. It must be from a trusted source, because if the authority is tampered with, RPCs may be sent to the attackers which may leak sensitive user data.

      An implementation must generate it without blocking, typically in line, and must keep it unchanged. NameResolvers created from the same factory with the same argument must return the same authority.

      Specified by:
      getServiceAuthority in class NameResolver
    • getHost

      protected String getHost()
    • 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 through NameResolver.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 class NameResolver
      Parameters:
      listener - used to receive updates on the target
    • refresh

      public void refresh()
      Description copied from class: NameResolver
      Re-resolve the name.

      Can only be called after NameResolver.start(io.grpc.NameResolver.Listener) has been called.

      This is only a hint. Implementation takes it as a signal but may not start resolution immediately. It should never throw.

      The default implementation is no-op.

      Overrides:
      refresh in class NameResolver
    • doResolve

      protected DnsNameResolver.InternalResolutionResult doResolve(boolean forceTxt)
      Main logic of name resolution.
    • shutdown

      public void shutdown()
      Description copied from class: NameResolver
      Stops the resolution. Updates to the Listener will stop.
      Specified by:
      shutdown in class NameResolver
    • setAddressResolver

      protected void setAddressResolver(DnsNameResolver.AddressResolver addressResolver)
    • setResourceResolver

      protected void setResourceResolver(DnsNameResolver.ResourceResolver resourceResolver)
    • getResourceResolver

      @Nullable protected DnsNameResolver.ResourceResolver getResourceResolver()
    • shouldUseJndi

      protected static boolean shouldUseJndi(boolean jndiEnabled, boolean jndiLocalhostEnabled, String target)