package io.netty.resolver.dns;

import io.netty.util.NetUtil;
import io.netty.util.collection.IntObjectHashMap;
import io.netty.util.collection.IntObjectMap;
import io.netty.util.internal.PlatformDependent;
import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Map;

/* JADX INFO: loaded from: classes.dex */
public final class DnsQueryContextManager {
    public final Map<InetSocketAddress, IntObjectMap<DnsQueryContext>> map = new HashMap();

    private IntObjectMap<DnsQueryContext> getContextMap(InetSocketAddress inetSocketAddress) {
        IntObjectMap<DnsQueryContext> intObjectMap;
        synchronized (this.map) {
            intObjectMap = this.map.get(inetSocketAddress);
        }
        return intObjectMap;
    }

    private IntObjectMap<DnsQueryContext> getOrCreateContextMap(InetSocketAddress inetSocketAddress) {
        Map<InetSocketAddress, IntObjectMap<DnsQueryContext>> map;
        InetSocketAddress inetSocketAddress2;
        Map<InetSocketAddress, IntObjectMap<DnsQueryContext>> map2;
        InetSocketAddress inetSocketAddress3;
        synchronized (this.map) {
            IntObjectMap<DnsQueryContext> intObjectMap = this.map.get(inetSocketAddress);
            if (intObjectMap != null) {
                return intObjectMap;
            }
            IntObjectHashMap intObjectHashMap = new IntObjectHashMap();
            InetAddress address = inetSocketAddress.getAddress();
            int port = inetSocketAddress.getPort();
            this.map.put(inetSocketAddress, intObjectHashMap);
            if (address instanceof Inet4Address) {
                Inet4Address inet4Address = (Inet4Address) address;
                if (inet4Address.isLoopbackAddress()) {
                    map2 = this.map;
                    inetSocketAddress3 = new InetSocketAddress(NetUtil.LOCALHOST6, port);
                    map2.put(inetSocketAddress3, intObjectHashMap);
                } else {
                    map = this.map;
                    inetSocketAddress2 = new InetSocketAddress(toCompactAddress(inet4Address), port);
                    map.put(inetSocketAddress2, intObjectHashMap);
                }
            } else if (address instanceof Inet6Address) {
                Inet6Address inet6Address = (Inet6Address) address;
                if (inet6Address.isLoopbackAddress()) {
                    map2 = this.map;
                    inetSocketAddress3 = new InetSocketAddress(NetUtil.LOCALHOST4, port);
                    map2.put(inetSocketAddress3, intObjectHashMap);
                } else if (inet6Address.isIPv4CompatibleAddress()) {
                    map = this.map;
                    inetSocketAddress2 = new InetSocketAddress(toIPv4Address(inet6Address), port);
                    map.put(inetSocketAddress2, intObjectHashMap);
                }
            }
            return intObjectHashMap;
        }
    }

    private static Inet6Address toCompactAddress(Inet4Address inet4Address) {
        byte[] address = inet4Address.getAddress();
        try {
            return (Inet6Address) InetAddress.getByAddress(new byte[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, address[0], address[1], address[2], address[3]});
        } catch (UnknownHostException e2) {
            throw new Error(e2);
        }
    }

    private static Inet4Address toIPv4Address(Inet6Address inet6Address) {
        byte[] address = inet6Address.getAddress();
        try {
            return (Inet4Address) InetAddress.getByAddress(new byte[]{address[12], address[13], address[14], address[15]});
        } catch (UnknownHostException e2) {
            throw new Error(e2);
        }
    }

    public int add(DnsQueryContext dnsQueryContext) {
        IntObjectMap<DnsQueryContext> orCreateContextMap = getOrCreateContextMap(dnsQueryContext.nameServerAddr());
        int iNextInt = PlatformDependent.threadLocalRandom().nextInt(65535) + 1;
        synchronized (orCreateContextMap) {
            int i2 = 0;
            while (orCreateContextMap.containsKey(iNextInt)) {
                iNextInt = (iNextInt + 1) & 65535;
                i2++;
                if (i2 >= 131070) {
                    throw new IllegalStateException("query ID space exhausted: " + dnsQueryContext.question());
                }
            }
            orCreateContextMap.put(iNextInt, dnsQueryContext);
        }
        return iNextInt;
    }

    public DnsQueryContext get(InetSocketAddress inetSocketAddress, int i2) {
        DnsQueryContext dnsQueryContext;
        IntObjectMap<DnsQueryContext> contextMap = getContextMap(inetSocketAddress);
        if (contextMap == null) {
            return null;
        }
        synchronized (contextMap) {
            dnsQueryContext = contextMap.get(i2);
        }
        return dnsQueryContext;
    }

    public DnsQueryContext remove(InetSocketAddress inetSocketAddress, int i2) {
        DnsQueryContext dnsQueryContextRemove;
        IntObjectMap<DnsQueryContext> contextMap = getContextMap(inetSocketAddress);
        if (contextMap == null) {
            return null;
        }
        synchronized (contextMap) {
            dnsQueryContextRemove = contextMap.remove(i2);
        }
        return dnsQueryContextRemove;
    }
}
