Example usage for io.netty.resolver.dns DnsCacheEntry address

List of usage examples for io.netty.resolver.dns DnsCacheEntry address

Introduction

In this page you can find the example usage for io.netty.resolver.dns DnsCacheEntry address.

Prototype

InetAddress address();

Source Link

Document

Get the resolved address.

Usage

From source file:io.vertx.core.dns.impl.fix.DnsNameResolver.java

License:Apache License

private boolean doResolveCached(String hostname, Promise<InetAddress> promise, DnsCache resolveCache) {
    final List<DnsCacheEntry> cachedEntries = resolveCache.get(hostname);
    if (cachedEntries == null) {
        return false;
    }//from www . j  a v  a 2 s .  c  om

    InetAddress address = null;
    Throwable cause = null;
    synchronized (cachedEntries) {
        final int numEntries = cachedEntries.size();
        assert numEntries > 0;

        if (cachedEntries.get(0).cause() != null) {
            cause = cachedEntries.get(0).cause();
        } else {
            // Find the first entry with the preferred address type.
            for (InternetProtocolFamily f : resolvedAddressTypes) {
                for (int i = 0; i < numEntries; i++) {
                    final DnsCacheEntry e = cachedEntries.get(i);
                    if (f.addressType().isInstance(e.address())) {
                        address = e.address();
                        break;
                    }
                }
            }
        }
    }

    if (address != null) {
        setSuccess(promise, address);
    } else if (cause != null) {
        if (!promise.tryFailure(cause)) {
            logger.warn("Failed to notify failure to a promise: {}", promise, cause);
        }
    } else {
        return false;
    }

    return true;
}

From source file:io.vertx.core.dns.impl.fix.DnsNameResolver.java

License:Apache License

private boolean doResolveAllCached(String hostname, Promise<List<InetAddress>> promise, DnsCache resolveCache) {
    final List<DnsCacheEntry> cachedEntries = resolveCache.get(hostname);
    if (cachedEntries == null) {
        return false;
    }/*from   ww  w. jav a2  s  .co  m*/

    List<InetAddress> result = null;
    Throwable cause = null;
    synchronized (cachedEntries) {
        final int numEntries = cachedEntries.size();
        assert numEntries > 0;

        if (cachedEntries.get(0).cause() != null) {
            cause = cachedEntries.get(0).cause();
        } else {
            for (InternetProtocolFamily f : resolvedAddressTypes) {
                for (int i = 0; i < numEntries; i++) {
                    final DnsCacheEntry e = cachedEntries.get(i);
                    if (f.addressType().isInstance(e.address())) {
                        if (result == null) {
                            result = new ArrayList<InetAddress>(numEntries);
                        }
                        result.add(e.address());
                    }
                }
            }
        }
    }

    if (result != null) {
        promise.trySuccess(result);
    } else if (cause != null) {
        promise.tryFailure(cause);
    } else {
        return false;
    }

    return true;
}