public DnsSrvResolver build() { // NOTE: this sucks, but is the only reasonably sane way to set a timeout in dnsjava... // the effect of doing this is to set a global timeout for all Lookup instances - except // those that potentially get a new Resolver assigned via the setResolver method... Since // Lookup instances are mostly encapsulated in this library, we should be fine. int timeoutSecs = checkedCast(MILLISECONDS.toSeconds(dnsLookupTimeoutMillis)); int millisRemainder = checkedCast(dnsLookupTimeoutMillis - SECONDS.toMillis(timeoutSecs)); Lookup.getDefaultResolver().setTimeout(timeoutSecs, millisRemainder); LookupFactory lookupFactory = new SimpleLookupFactory(); if (cacheLookups) { lookupFactory = new CachingLookupFactory(lookupFactory); } DnsSrvResolver result = new XBillDnsSrvResolver(lookupFactory); if (reporter != null) { result = new MeteredDnsSrvResolver(result, reporter); } if (retainData) { result = new RetainingDnsSrvResolver(result, retentionDurationMillis); } return result; }
public DnsSrvResolver build() { Resolver resolver; try { // If the user specified DNS servers, create a new ExtendedResolver which uses them. // Otherwise, use the default constructor. That will use the servers in ResolverConfig, // or if that's empty, localhost. resolver = servers == null ? new ExtendedResolver() : new ExtendedResolver(servers.toArray(new String[servers.size()])); } catch (UnknownHostException e) { throw new RuntimeException(e); } // Configure the Resolver to use our timeouts. int timeoutSecs = checkedCast(MILLISECONDS.toSeconds(dnsLookupTimeoutMillis)); int millisRemainder = checkedCast(dnsLookupTimeoutMillis - SECONDS.toMillis(timeoutSecs)); resolver.setTimeout(timeoutSecs, millisRemainder); LookupFactory lookupFactory = new SimpleLookupFactory(resolver); if (cacheLookups) { lookupFactory = new CachingLookupFactory(lookupFactory); } DnsSrvResolver result = new XBillDnsSrvResolver(lookupFactory); if (reporter != null) { result = new MeteredDnsSrvResolver(result, reporter); } if (retainData) { result = new RetainingDnsSrvResolver(result, retentionDurationMillis); } return result; }