public ResolveResult resolve()

in dubbo-registry-extensions/dubbo-registry-dns/src/main/java/org/apache/dubbo/registry/dns/util/DNSResolver.java [57:101]


    public ResolveResult resolve(String path) {
        ResolveResult recordList = new ResolveResult();

        try {
            Future<List<InetAddress>> hostFuture = resolver.resolveAll(path);
            Future<AddressedEnvelope<DnsResponse, InetSocketAddress>> srvFuture =
                resolver.query(new DefaultDnsQuestion(path, DnsRecordType.SRV));

            try {
                recordList.getHostnameList()
                    .addAll(hostFuture
                        .sync().getNow()
                        .stream()
                        .map(InetAddress::getHostAddress)
                        .collect(Collectors.toList()));

                DnsResponse srvResponse = srvFuture.sync().getNow().content();
                for (int i = 0; i < srvResponse.count(DnsSection.ANSWER); i++) {
                    DnsRawRecord record = srvResponse.recordAt(DnsSection.ANSWER, i);
                    ByteBuf buf = record.content();
                    // Priority
                    buf.readUnsignedShort();
                    // Weight
                    buf.readUnsignedShort();
                    // Port
                    int port = buf.readUnsignedShort();
                    recordList.getPort().add(port);
                }

            } catch (InterruptedException e) {
                logger.warn("Waiting DNS resolve interrupted. " + e.getLocalizedMessage());
            }
        } catch (Throwable t) {
            if (t instanceof UnknownHostException) {
                if (logger.isInfoEnabled()) {
                    logger.info(t.getLocalizedMessage());
                }
            } else {
                logger.error(t.getLocalizedMessage());
            }
        }


        return recordList;
    }