@Override public DnsServerAddressStream stream() { return new SequentialDnsServerAddressStream(addresses, 0); } };
@Override public String toString() { return SequentialDnsServerAddressStream.toString("shuffled", i, addresses); } }
@Override public SequentialDnsServerAddressStream duplicate() { return new SequentialDnsServerAddressStream(addresses, i); }
@Override public String toString() { return toString("sequential", i, addresses); }
@Override public DnsServerAddressStream stream() { return new SequentialDnsServerAddressStream(addresses, 0); } };
@Override public String toString() { return SequentialDnsServerAddressStream.toString("shuffled", i, addresses); } }
@Override public SequentialDnsServerAddressStream duplicate() { return new SequentialDnsServerAddressStream(addresses, i); }
@Override public String toString() { return toString("sequential", i, addresses); }
@Override public DnsServerAddressStream stream() { for (;;) { int curStartIdx = startIdx; int nextStartIdx = curStartIdx + 1; if (nextStartIdx >= addresses.size()) { nextStartIdx = 0; } if (startIdxUpdater.compareAndSet(this, curStartIdx, nextStartIdx)) { return new SequentialDnsServerAddressStream(addresses, curStartIdx); } } } }
@Override public String toString() { return SequentialDnsServerAddressStream.toString("shuffled", i, addresses); } }
/** * Creates a new {@link DnsServerAddressStream} to following a redirected DNS query. By overriding this * it provides the opportunity to sort the name servers before following a redirected DNS query. * * @param hostname the hostname. * @param nameservers The addresses of the DNS servers which are used in the event of a redirect. This may * contain resolved and unresolved addresses so the used {@link DnsServerAddressStream} must * allow unresolved addresses if you want to include these as well. * @return A {@link DnsServerAddressStream} which will be used to follow the DNS redirect or {@code null} if * none should be followed. */ protected DnsServerAddressStream newRedirectDnsServerStream( @SuppressWarnings("unused") String hostname, List<InetSocketAddress> nameservers) { Collections.sort(nameservers, nameServerComparator); return new SequentialDnsServerAddressStream(nameservers, 0); }
@Override public String toString() { return SequentialDnsServerAddressStream.toString("shuffled", i, addresses); } }
@Override public DnsServerAddressStream stream() { for (;;) { int curStartIdx = startIdx; int nextStartIdx = curStartIdx + 1; if (nextStartIdx >= addresses.size()) { nextStartIdx = 0; } if (startIdxUpdater.compareAndSet(this, curStartIdx, nextStartIdx)) { return new SequentialDnsServerAddressStream(addresses, curStartIdx); } } } }
@Override public String toString() { return SequentialDnsServerAddressStream.toString("shuffled", i, addresses); } }
@SuppressWarnings("unchecked") @Override public DnsServerAddressStream get(String hostname) { checkNotNull(hostname, "hostname"); List<? extends InetSocketAddress> addresses = resolveCache.get(hostname); if (addresses == null || addresses.isEmpty()) { return null; } return new SequentialDnsServerAddressStream(addresses, 0); }
@Override public String toString() { return toString("sequential", i, addresses); }
@Override public DnsServerAddressStream get(String hostname) { List<? extends DnsCacheEntry> entries = cache.get(hostname, EMPTY); if (entries == null || entries.isEmpty()) { return null; } if (entries.get(0).cause() != null) { return null; } List<InetSocketAddress> addresses = new ArrayList<InetSocketAddress>(entries.size()); int i = 0; do { InetAddress addr = entries.get(i).address(); addresses.add(new InetSocketAddress(addr, DefaultDnsServerAddressStreamProvider.DNS_PORT)); } while (++i < entries.size()); return new SequentialDnsServerAddressStream(addresses, 0); }
@Override public String toString() { return toString("sequential", i, addresses); }
@SuppressWarnings("unchecked") @Override public DnsServerAddressStream get(String hostname) { checkNotNull(hostname, "hostname"); List<? extends InetSocketAddress> addresses = resolveCache.get(hostname); if (addresses == null || addresses.isEmpty()) { return null; } return new SequentialDnsServerAddressStream(addresses, 0); }
@Override public String toString() { return toString("sequential", i, addresses); }