@Override void cache(String hostname, DnsRecord[] additionals, UnknownHostException cause) { resolveCache.cache(hostname, additionals, cause, parent.ch.eventLoop()); }
@Override public boolean clear(String hostname) { return cache.clear(hostname); } }
@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 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 void cache(String hostname, InetSocketAddress address, long originalTtl, EventLoop loop) { // We only cache resolved addresses. if (!address.isUnresolved()) { cache.cache(hostname, EMPTY, address.getAddress(), originalTtl, loop); } }
@Override public void clear() { cache.clear(); }
DnsCache resolveCache, InternetProtocolFamily[] resolvedInternetProtocolFamilies) { final List<? extends DnsCacheEntry> cachedEntries = resolveCache.get(hostname, additionals); if (cachedEntries == null || cachedEntries.isEmpty()) { return false;
@Override public void cache(String hostname, InetSocketAddress address, long originalTtl, EventLoop loop) { // We only cache resolved addresses. if (!address.isUnresolved()) { cache.cache(hostname, EMPTY, address.getAddress(), originalTtl, loop); } }
@Override public boolean clear(String hostname) { return cache.clear(hostname); } }
private boolean doResolveCached(String hostname, DnsRecord[] additionals, Promise<InetAddress> promise, DnsCache resolveCache) { final List<? extends DnsCacheEntry> cachedEntries = resolveCache.get(hostname, additionals); if (cachedEntries == null || cachedEntries.isEmpty()) { return false; } Throwable cause = cachedEntries.get(0).cause(); if (cause == null) { final int numEntries = cachedEntries.size(); // Find the first entry with the preferred address type. for (InternetProtocolFamily f : resolvedInternetProtocolFamilies) { for (int i = 0; i < numEntries; i++) { final DnsCacheEntry e = cachedEntries.get(i); if (f.addressType().isInstance(e.address())) { trySuccess(promise, e.address()); return true; } } } return false; } else { tryFailure(promise, cause); return true; } }
@Override void cache(String hostname, DnsRecord[] additionals, DnsRecord result, InetAddress convertedResult) { resolveCache.cache(hostname, additionals, convertedResult, result.timeToLive(), parent.ch.eventLoop()); }
@Override public void clear() { cache.clear(); }
DnsCache resolveCache, InternetProtocolFamily[] resolvedInternetProtocolFamilies) { final List<? extends DnsCacheEntry> cachedEntries = resolveCache.get(hostname, additionals); if (cachedEntries == null || cachedEntries.isEmpty()) { return false;
@Override void cache(String hostname, DnsRecord[] additionals, UnknownHostException cause) { resolveCache.cache(hostname, additionals, cause, parent.ch.eventLoop()); }
@Override public void operationComplete(ChannelFuture future) { resolveCache.clear(); authoritativeDnsServerCache.clear(); } });
private boolean doResolveCached(String hostname, DnsRecord[] additionals, Promise<InetAddress> promise, DnsCache resolveCache) { final List<? extends DnsCacheEntry> cachedEntries = resolveCache.get(hostname, additionals); if (cachedEntries == null || cachedEntries.isEmpty()) { return false; } Throwable cause = cachedEntries.get(0).cause(); if (cause == null) { final int numEntries = cachedEntries.size(); // Find the first entry with the preferred address type. for (InternetProtocolFamily f : resolvedInternetProtocolFamilies) { for (int i = 0; i < numEntries; i++) { final DnsCacheEntry e = cachedEntries.get(i); if (f.addressType().isInstance(e.address())) { trySuccess(promise, e.address()); return true; } } } return false; } else { tryFailure(promise, cause); return true; } }
@Override void cache(String hostname, DnsRecord[] additionals, DnsRecord result, InetAddress convertedResult) { resolveCache.cache(hostname, additionals, convertedResult, result.timeToLive(), parent.ch.eventLoop()); }
@Override public void operationComplete(ChannelFuture future) { resolveCache.clear(); cnameCache.clear(); authoritativeDnsServerCache.clear(); } });
List<? extends DnsCacheEntry> entries = cache.get(serverName.nsName, null); if (entries != null && !entries.isEmpty()) { InetAddress address = entries.get(0).address();
@Override void cache(String hostname, DnsRecord[] additionals, UnknownHostException cause) { resolveCache.cache(hostname, additionals, cause, parent.ch.eventLoop()); }