MacOSDnsServerAddressStreamProvider Class — netty Architecture
Architecture documentation for the MacOSDnsServerAddressStreamProvider class in MacOSDnsServerAddressStreamProvider.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 268a4b26_3b4a_685c_306c_99ddbf78df83["MacOSDnsServerAddressStreamProvider"] 2b7f1dad_500b_b401_652a_64b96662750e["MacOSDnsServerAddressStreamProvider.java"] 268a4b26_3b4a_685c_306c_99ddbf78df83 -->|defined in| 2b7f1dad_500b_b401_652a_64b96662750e 762fdf21_e4f7_eaa8_5606_bd43986ec0b2["loadNativeLibrary()"] 268a4b26_3b4a_685c_306c_99ddbf78df83 -->|method| 762fdf21_e4f7_eaa8_5606_bd43986ec0b2 2b4fc404_4f79_2ad7_c544_900c3f6ef013["isAvailable()"] 268a4b26_3b4a_685c_306c_99ddbf78df83 -->|method| 2b4fc404_4f79_2ad7_c544_900c3f6ef013 85c0afb7_9116_07ec_9b31_a74828538f1a["ensureAvailability()"] 268a4b26_3b4a_685c_306c_99ddbf78df83 -->|method| 85c0afb7_9116_07ec_9b31_a74828538f1a f92ace28_4288_5487_dfa0_430f467810aa["Throwable()"] 268a4b26_3b4a_685c_306c_99ddbf78df83 -->|method| f92ace28_4288_5487_dfa0_430f467810aa 8885f722_5e2a_4070_a8f3_2046f1f7c051["MacOSDnsServerAddressStreamProvider()"] 268a4b26_3b4a_685c_306c_99ddbf78df83 -->|method| 8885f722_5e2a_4070_a8f3_2046f1f7c051 e7b86b00_0660_4f14_26bc_7b1dd4f94dda["retrieveCurrentMappings()"] 268a4b26_3b4a_685c_306c_99ddbf78df83 -->|method| e7b86b00_0660_4f14_26bc_7b1dd4f94dda d0561e6b_b305_b793_716f_98dda25d5bb9["DnsServerAddressStream()"] 268a4b26_3b4a_685c_306c_99ddbf78df83 -->|method| d0561e6b_b305_b793_716f_98dda25d5bb9 4ed831db_e451_8a6c_c552_96d2650b78ff["resolvers()"] 268a4b26_3b4a_685c_306c_99ddbf78df83 -->|method| 4ed831db_e451_8a6c_c552_96d2650b78ff
Relationship Graph
Source Code
resolver-dns-classes-macos/src/main/java/io/netty/resolver/dns/macos/MacOSDnsServerAddressStreamProvider.java lines 44–202
public final class MacOSDnsServerAddressStreamProvider implements DnsServerAddressStreamProvider {
private static final Comparator<DnsResolver> RESOLVER_COMPARATOR =
new Comparator<DnsResolver>() {
@Override
public int compare(DnsResolver r1, DnsResolver r2) {
// Note: order is descending (from higher to lower) so entries with lower search order override
// entries with higher search order.
return r1.searchOrder() < r2.searchOrder() ? 1 : r1.searchOrder() == r2.searchOrder() ? 0 : -1;
}
};
private static final Throwable UNAVAILABILITY_CAUSE;
private static final InternalLogger logger =
InternalLoggerFactory.getInstance(MacOSDnsServerAddressStreamProvider.class);
// Let's refresh every 10 seconds.
private static final long REFRESH_INTERVAL = TimeUnit.SECONDS.toNanos(10);
static {
// Preload all classes that will be used in the OnLoad(...) function of JNI to eliminate the possiblity of a
// class-loader deadlock. This is a workaround for https://github.com/netty/netty/issues/11209.
// This needs to match all the classes that are loaded via NETTY_JNI_UTIL_LOAD_CLASS or looked up via
// NETTY_JNI_UTIL_FIND_CLASS.
ClassInitializerUtil.tryLoadClasses(MacOSDnsServerAddressStreamProvider.class,
// netty_resolver_dns_macos
byte[].class, String.class
);
Throwable cause = null;
try {
loadNativeLibrary();
} catch (Throwable error) {
cause = error;
}
UNAVAILABILITY_CAUSE = cause;
}
private static void loadNativeLibrary() {
if (!PlatformDependent.isOsx()) {
throw new IllegalStateException("Only supported on MacOS/OSX");
}
String staticLibName = "netty_resolver_dns_native_macos";
String sharedLibName = staticLibName + '_' + PlatformDependent.normalizedArch();
ClassLoader cl = PlatformDependent.getClassLoader(MacOSDnsServerAddressStreamProvider.class);
try {
NativeLibraryLoader.load(sharedLibName, cl);
} catch (UnsatisfiedLinkError e1) {
try {
NativeLibraryLoader.load(staticLibName, cl);
logger.debug("Failed to load {}", sharedLibName, e1);
} catch (UnsatisfiedLinkError e2) {
ThrowableUtil.addSuppressed(e1, e2);
throw e1;
}
}
}
public static boolean isAvailable() {
return UNAVAILABILITY_CAUSE == null;
}
public static void ensureAvailability() {
if (UNAVAILABILITY_CAUSE != null) {
throw (Error) new UnsatisfiedLinkError(
"failed to load the required native library").initCause(UNAVAILABILITY_CAUSE);
}
}
public static Throwable unavailabilityCause() {
return UNAVAILABILITY_CAUSE;
}
public MacOSDnsServerAddressStreamProvider() {
ensureAvailability();
currentMappings = retrieveCurrentMappings();
lastRefresh = new AtomicLong(System.nanoTime());
}
Source
Frequently Asked Questions
What is the MacOSDnsServerAddressStreamProvider class?
MacOSDnsServerAddressStreamProvider is a class in the netty codebase, defined in resolver-dns-classes-macos/src/main/java/io/netty/resolver/dns/macos/MacOSDnsServerAddressStreamProvider.java.
Where is MacOSDnsServerAddressStreamProvider defined?
MacOSDnsServerAddressStreamProvider is defined in resolver-dns-classes-macos/src/main/java/io/netty/resolver/dns/macos/MacOSDnsServerAddressStreamProvider.java at line 44.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free