正在查看: 逼多多 v3.6.2 应用的 NameResolverRegistry.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: 逼多多 v3.6.2 应用的 NameResolverRegistry.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package io.grpc;
import com.google.common.collect.k;
import io.grpc.NameResolver;
import io.grpc.ServiceProviders;
import io.grpc.internal.DnsNameResolverProvider;
import java.net.URI;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import q.l;
@ExperimentalApi("https://github.com/grpc/grpc-java/issues/4159")
public final class NameResolverRegistry {
private static final String UNKNOWN_SCHEME = "unknown";
private static NameResolverRegistry instance;
private static final Logger logger = Logger.getLogger(NameResolverRegistry.class.getName());
private final NameResolver.Factory factory = new NameResolverFactory();
private String defaultScheme = UNKNOWN_SCHEME;
private final LinkedHashSet<NameResolverProvider> allProviders = new LinkedHashSet<>();
private k effectiveProviders = k.i();
private final class NameResolverFactory extends NameResolver.Factory {
private NameResolverFactory() {
}
@Override
public String getDefaultScheme() {
return NameResolverRegistry.this.getDefaultScheme();
}
@Override
public NameResolver newNameResolver(URI uri, NameResolver.Args args) {
NameResolverProvider providerForScheme = NameResolverRegistry.this.getProviderForScheme(uri.getScheme());
if (providerForScheme == null) {
return null;
}
return providerForScheme.newNameResolver(uri, args);
}
}
private static final class NameResolverPriorityAccessor implements ServiceProviders.PriorityAccessor<NameResolverProvider> {
private NameResolverPriorityAccessor() {
}
@Override
public int getPriority(NameResolverProvider nameResolverProvider) {
return nameResolverProvider.priority();
}
@Override
public boolean isAvailable(NameResolverProvider nameResolverProvider) {
return nameResolverProvider.isAvailable();
}
}
private synchronized void addProvider(NameResolverProvider nameResolverProvider) {
l.e(nameResolverProvider.isAvailable(), "isAvailable() returned false");
this.allProviders.add(nameResolverProvider);
}
public static synchronized NameResolverRegistry getDefaultRegistry() {
NameResolverRegistry nameResolverRegistry;
synchronized (NameResolverRegistry.class) {
try {
if (instance == null) {
List<NameResolverProvider> loadAll = ServiceProviders.loadAll(NameResolverProvider.class, getHardCodedClasses(), NameResolverProvider.class.getClassLoader(), new NameResolverPriorityAccessor());
if (loadAll.isEmpty()) {
logger.warning("No NameResolverProviders found via ServiceLoader, including for DNS. This is probably due to a broken build. If using ProGuard, check your configuration");
}
instance = new NameResolverRegistry();
for (NameResolverProvider nameResolverProvider : loadAll) {
logger.fine("Service loader found " + nameResolverProvider);
instance.addProvider(nameResolverProvider);
}
instance.refreshProviders();
}
nameResolverRegistry = instance;
} catch (Throwable th) {
throw th;
}
}
return nameResolverRegistry;
}
static List<Class<?>> getHardCodedClasses() {
ArrayList arrayList = new ArrayList();
try {
int i = DnsNameResolverProvider.a;
arrayList.add(DnsNameResolverProvider.class);
} catch (ClassNotFoundException e) {
logger.log(Level.FINE, "Unable to find DNS NameResolver", (Throwable) e);
}
return Collections.unmodifiableList(arrayList);
}
private synchronized void refreshProviders() {
throw new UnsupportedOperationException("Method not decompiled: io.grpc.NameResolverRegistry.refreshProviders():void");
}
public NameResolver.Factory asFactory() {
return this.factory;
}
public synchronized void deregister(NameResolverProvider nameResolverProvider) {
this.allProviders.remove(nameResolverProvider);
refreshProviders();
}
public synchronized String getDefaultScheme() {
return this.defaultScheme;
}
public NameResolverProvider getProviderForScheme(String str) {
if (str == null) {
return null;
}
return providers().get(str.toLowerCase(Locale.US));
}
synchronized Map<String, NameResolverProvider> providers() {
return this.effectiveProviders;
}
public synchronized void register(NameResolverProvider nameResolverProvider) {
addProvider(nameResolverProvider);
refreshProviders();
}
}