mirror of https://github.com/grpc/grpc-java.git
core: Move ACCEPT_ENCODING_JOINER to DecompressorRegistry
This removes a reference of io.grpc.internal from io.grpc. It also optimizes server call handling for outbound grpc-accept-encoding header, as had already been done for client call.
This commit is contained in:
parent
4b127f2231
commit
0b55c81548
|
|
@ -31,7 +31,7 @@
|
||||||
|
|
||||||
package io.grpc;
|
package io.grpc;
|
||||||
|
|
||||||
import io.grpc.internal.GrpcUtil;
|
import static io.grpc.DecompressorRegistry.ACCEPT_ENCODING_JOINER;
|
||||||
|
|
||||||
import org.openjdk.jmh.annotations.Benchmark;
|
import org.openjdk.jmh.annotations.Benchmark;
|
||||||
import org.openjdk.jmh.annotations.BenchmarkMode;
|
import org.openjdk.jmh.annotations.BenchmarkMode;
|
||||||
|
|
@ -87,7 +87,7 @@ public class DecompressorRegistryBenchmark {
|
||||||
@OutputTimeUnit(TimeUnit.NANOSECONDS)
|
@OutputTimeUnit(TimeUnit.NANOSECONDS)
|
||||||
public String dynamicAcceptEncoding() {
|
public String dynamicAcceptEncoding() {
|
||||||
if (!reg.getAdvertisedMessageEncodings().isEmpty()) {
|
if (!reg.getAdvertisedMessageEncodings().isEmpty()) {
|
||||||
return GrpcUtil.ACCEPT_ENCODING_JOINER.join(reg.getAdvertisedMessageEncodings());
|
return ACCEPT_ENCODING_JOINER.join(reg.getAdvertisedMessageEncodings());
|
||||||
}
|
}
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,8 @@ package io.grpc;
|
||||||
|
|
||||||
import static com.google.common.base.Preconditions.checkArgument;
|
import static com.google.common.base.Preconditions.checkArgument;
|
||||||
import static com.google.common.base.Preconditions.checkNotNull;
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
import static io.grpc.internal.GrpcUtil.ACCEPT_ENCODING_JOINER;
|
|
||||||
|
import com.google.common.base.Joiner;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
|
@ -51,6 +52,8 @@ import javax.annotation.concurrent.ThreadSafe;
|
||||||
@ExperimentalApi("https://github.com/grpc/grpc-java/issues/1704")
|
@ExperimentalApi("https://github.com/grpc/grpc-java/issues/1704")
|
||||||
@ThreadSafe
|
@ThreadSafe
|
||||||
public final class DecompressorRegistry {
|
public final class DecompressorRegistry {
|
||||||
|
static final Joiner ACCEPT_ENCODING_JOINER = Joiner.on(',');
|
||||||
|
|
||||||
public static DecompressorRegistry emptyInstance() {
|
public static DecompressorRegistry emptyInstance() {
|
||||||
return new DecompressorRegistry();
|
return new DecompressorRegistry();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,6 @@ package io.grpc.internal;
|
||||||
import static com.google.common.base.Preconditions.checkArgument;
|
import static com.google.common.base.Preconditions.checkArgument;
|
||||||
|
|
||||||
import com.google.common.annotations.VisibleForTesting;
|
import com.google.common.annotations.VisibleForTesting;
|
||||||
import com.google.common.base.Joiner;
|
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
import com.google.common.base.Splitter;
|
import com.google.common.base.Splitter;
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
|
@ -143,8 +142,6 @@ public final class GrpcUtil {
|
||||||
|
|
||||||
public static final Splitter ACCEPT_ENCODING_SPLITER = Splitter.on(',').trimResults();
|
public static final Splitter ACCEPT_ENCODING_SPLITER = Splitter.on(',').trimResults();
|
||||||
|
|
||||||
public static final Joiner ACCEPT_ENCODING_JOINER = Joiner.on(',');
|
|
||||||
|
|
||||||
private static final String IMPLEMENTATION_VERION = getImplementationVersion();
|
private static final String IMPLEMENTATION_VERION = getImplementationVersion();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,6 @@ package io.grpc.internal;
|
||||||
import static com.google.common.base.Preconditions.checkArgument;
|
import static com.google.common.base.Preconditions.checkArgument;
|
||||||
import static com.google.common.base.Preconditions.checkNotNull;
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
import static com.google.common.base.Preconditions.checkState;
|
import static com.google.common.base.Preconditions.checkState;
|
||||||
import static io.grpc.internal.GrpcUtil.ACCEPT_ENCODING_JOINER;
|
|
||||||
import static io.grpc.internal.GrpcUtil.ACCEPT_ENCODING_SPLITER;
|
import static io.grpc.internal.GrpcUtil.ACCEPT_ENCODING_SPLITER;
|
||||||
import static io.grpc.internal.GrpcUtil.MESSAGE_ACCEPT_ENCODING_KEY;
|
import static io.grpc.internal.GrpcUtil.MESSAGE_ACCEPT_ENCODING_KEY;
|
||||||
import static io.grpc.internal.GrpcUtil.MESSAGE_ENCODING_KEY;
|
import static io.grpc.internal.GrpcUtil.MESSAGE_ENCODING_KEY;
|
||||||
|
|
@ -58,7 +57,6 @@ import io.grpc.Status;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
final class ServerCallImpl<ReqT, RespT> extends ServerCall<RespT> {
|
final class ServerCallImpl<ReqT, RespT> extends ServerCall<RespT> {
|
||||||
private final ServerStream stream;
|
private final ServerStream stream;
|
||||||
|
|
@ -139,9 +137,9 @@ final class ServerCallImpl<ReqT, RespT> extends ServerCall<RespT> {
|
||||||
stream.setCompressor(compressor);
|
stream.setCompressor(compressor);
|
||||||
|
|
||||||
headers.removeAll(MESSAGE_ACCEPT_ENCODING_KEY);
|
headers.removeAll(MESSAGE_ACCEPT_ENCODING_KEY);
|
||||||
Set<String> acceptEncodings = decompressorRegistry.getAdvertisedMessageEncodings();
|
String advertisedEncodings = decompressorRegistry.getRawAdvertisedMessageEncodings();
|
||||||
if (!acceptEncodings.isEmpty()) {
|
if (!advertisedEncodings.isEmpty()) {
|
||||||
headers.put(MESSAGE_ACCEPT_ENCODING_KEY, ACCEPT_ENCODING_JOINER.join(acceptEncodings));
|
headers.put(MESSAGE_ACCEPT_ENCODING_KEY, advertisedEncodings);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Don't check if sendMessage has been called, since it requires that sendHeaders was already
|
// Don't check if sendMessage has been called, since it requires that sendHeaders was already
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue