Example usage for io.netty.channel.socket InternetProtocolFamily addressType

List of usage examples for io.netty.channel.socket InternetProtocolFamily addressType

Introduction

In this page you can find the example usage for io.netty.channel.socket InternetProtocolFamily addressType.

Prototype

Class addressType

To view the source code for io.netty.channel.socket InternetProtocolFamily addressType.

Click Source Link

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   ww w. j a  v  a 2s.  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 . ja  v  a  2 s  . c o 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;
}