正在查看: 逼多多 v3.6.2 应用的 DecompressorRegistry.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: 逼多多 v3.6.2 应用的 DecompressorRegistry.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package io.grpc;
import io.grpc.Codec;
import java.nio.charset.Charset;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import q.f;
import q.l;
@ExperimentalApi("https://github.com/grpc/grpc-java/issues/1704")
public final class DecompressorRegistry {
static final f ACCEPT_ENCODING_JOINER = f.f(',');
private static final DecompressorRegistry DEFAULT_INSTANCE = emptyInstance().with(new Codec.Gzip(), true).with(Codec.Identity.NONE, false);
private final byte[] advertisedDecompressors;
private final Map<String, DecompressorInfo> decompressors;
private static final class DecompressorInfo {
final boolean advertised;
final Decompressor decompressor;
DecompressorInfo(Decompressor decompressor, boolean z) {
this.decompressor = (Decompressor) l.o(decompressor, "decompressor");
this.advertised = z;
}
}
private DecompressorRegistry(Decompressor decompressor, boolean z, DecompressorRegistry decompressorRegistry) {
String messageEncoding = decompressor.getMessageEncoding();
l.e(!messageEncoding.contains(","), "Comma is currently not allowed in message encoding");
int size = decompressorRegistry.decompressors.size();
LinkedHashMap linkedHashMap = new LinkedHashMap(decompressorRegistry.decompressors.containsKey(decompressor.getMessageEncoding()) ? size : size + 1);
for (DecompressorInfo decompressorInfo : decompressorRegistry.decompressors.values()) {
String messageEncoding2 = decompressorInfo.decompressor.getMessageEncoding();
if (!messageEncoding2.equals(messageEncoding)) {
linkedHashMap.put(messageEncoding2, new DecompressorInfo(decompressorInfo.decompressor, decompressorInfo.advertised));
}
}
linkedHashMap.put(messageEncoding, new DecompressorInfo(decompressor, z));
this.decompressors = Collections.unmodifiableMap(linkedHashMap);
this.advertisedDecompressors = ACCEPT_ENCODING_JOINER.d(getAdvertisedMessageEncodings()).getBytes(Charset.forName("US-ASCII"));
}
public static DecompressorRegistry emptyInstance() {
return new DecompressorRegistry();
}
public static DecompressorRegistry getDefaultInstance() {
return DEFAULT_INSTANCE;
}
@ExperimentalApi("https://github.com/grpc/grpc-java/issues/1704")
public Set<String> getAdvertisedMessageEncodings() {
HashSet hashSet = new HashSet(this.decompressors.size());
for (Map.Entry<String, DecompressorInfo> entry : this.decompressors.entrySet()) {
if (entry.getValue().advertised) {
hashSet.add(entry.getKey());
}
}
return Collections.unmodifiableSet(hashSet);
}
public Set<String> getKnownMessageEncodings() {
return this.decompressors.keySet();
}
byte[] getRawAdvertisedMessageEncodings() {
return this.advertisedDecompressors;
}
public Decompressor lookupDecompressor(String str) {
DecompressorInfo decompressorInfo = this.decompressors.get(str);
if (decompressorInfo != null) {
return decompressorInfo.decompressor;
}
return null;
}
public DecompressorRegistry with(Decompressor decompressor, boolean z) {
return new DecompressorRegistry(decompressor, z, this);
}
private DecompressorRegistry() {
this.decompressors = new LinkedHashMap(0);
this.advertisedDecompressors = new byte[0];
}
}