package io.grpc.internal; import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; import com.google.common.util.concurrent.MoreExecutors; import io.grpc.Attributes; import io.grpc.CallOptions; import io.grpc.ClientCall; import io.grpc.Codec; import io.grpc.Compressor; import io.grpc.CompressorRegistry; import io.grpc.Context; import io.grpc.Contexts; import io.grpc.Deadline; import io.grpc.DecompressorRegistry; import io.grpc.InternalConfigSelector; import io.grpc.InternalDecompressorRegistry; import io.grpc.Metadata; import io.grpc.MethodDescriptor; import io.grpc.Status; import io.grpc.internal.ClientStreamListener; import io.grpc.internal.ManagedChannelServiceConfig; import io.grpc.internal.StreamListener; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.Locale; import java.util.concurrent.CancellationException; import java.util.concurrent.Executor; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; import o.C13115fRJ; import o.C13116fRL; import o.fRN; /* JADX INFO: Access modifiers changed from: package-private */ /* loaded from: classes6.dex */ public final class ClientCallImpl extends ClientCall { private final Executor callExecutor; private final boolean callExecutorIsDirect; private CallOptions callOptions; private boolean cancelCalled; private volatile boolean cancelListenersShouldBeRemoved; private final CallTracer channelCallsTracer; private final ClientStreamProvider clientStreamProvider; private final Context context; private final ScheduledExecutorService deadlineCancellationExecutor; private volatile ScheduledFuture deadlineCancellationFuture; private boolean fullStreamDecompression; private boolean halfCloseCalled; private final MethodDescriptor method; private ClientStream stream; private final fRN tag; private final boolean unaryRequest; private static final Logger log = Logger.getLogger(ClientCallImpl.class.getName()); private static final byte[] FULL_STREAM_DECOMPRESSION_ENCODINGS = "gzip".getBytes(StandardCharsets.US_ASCII); private final ClientCallImpl.ContextCancellationListener cancellationListener = new ContextCancellationListener(); private DecompressorRegistry decompressorRegistry = DecompressorRegistry.getDefaultInstance(); private CompressorRegistry compressorRegistry = CompressorRegistry.getDefaultInstance(); /* JADX INFO: Access modifiers changed from: package-private */ /* loaded from: classes6.dex */ public interface ClientStreamProvider { ClientStream newStream(MethodDescriptor methodDescriptor, CallOptions callOptions, Metadata metadata, Context context); } /* JADX INFO: Access modifiers changed from: package-private */ public ClientCallImpl(MethodDescriptor methodDescriptor, Executor executor, CallOptions callOptions, ClientStreamProvider clientStreamProvider, ScheduledExecutorService scheduledExecutorService, CallTracer callTracer, InternalConfigSelector internalConfigSelector) { this.method = methodDescriptor; methodDescriptor.getFullMethodName(); this.tag = C13115fRJ.a(); if (executor == MoreExecutors.directExecutor()) { this.callExecutor = new SerializeReentrantCallsDirectExecutor(); this.callExecutorIsDirect = true; } else { this.callExecutor = new SerializingExecutor(executor); this.callExecutorIsDirect = false; } this.channelCallsTracer = callTracer; this.context = Context.current(); this.unaryRequest = methodDescriptor.getType() == MethodDescriptor.MethodType.UNARY || methodDescriptor.getType() == MethodDescriptor.MethodType.SERVER_STREAMING; this.callOptions = callOptions; this.clientStreamProvider = clientStreamProvider; this.deadlineCancellationExecutor = scheduledExecutorService; C13115fRJ.c(); } /* JADX INFO: Access modifiers changed from: package-private */ /* loaded from: classes6.dex */ public final class ContextCancellationListener implements Context.CancellationListener { final ClientCallImpl this$0; private ContextCancellationListener(ClientCallImpl clientCallImpl) { this.this$0 = clientCallImpl; } @Override // io.grpc.Context.CancellationListener public final void cancelled(Context context) { this.this$0.stream.cancel(Contexts.statusFromCancelled(context)); } } static void prepareHeaders(Metadata metadata, DecompressorRegistry decompressorRegistry, Compressor compressor, boolean z) { metadata.discardAll(GrpcUtil.CONTENT_LENGTH_KEY); metadata.discardAll(GrpcUtil.MESSAGE_ENCODING_KEY); if (compressor != Codec.Identity.NONE) { metadata.put(GrpcUtil.MESSAGE_ENCODING_KEY, compressor.getMessageEncoding()); } metadata.discardAll(GrpcUtil.MESSAGE_ACCEPT_ENCODING_KEY); byte[] rawAdvertisedMessageEncodings = InternalDecompressorRegistry.getRawAdvertisedMessageEncodings(decompressorRegistry); if (rawAdvertisedMessageEncodings.length != 0) { metadata.put(GrpcUtil.MESSAGE_ACCEPT_ENCODING_KEY, rawAdvertisedMessageEncodings); } metadata.discardAll(GrpcUtil.CONTENT_ENCODING_KEY); metadata.discardAll(GrpcUtil.CONTENT_ACCEPT_ENCODING_KEY); if (z) { metadata.put(GrpcUtil.CONTENT_ACCEPT_ENCODING_KEY, FULL_STREAM_DECOMPRESSION_ENCODINGS); } } @Override // io.grpc.ClientCall public final void start(ClientCall.Listener listener, Metadata metadata) { C13115fRJ.g(); try { startInternal(listener, metadata); } finally { C13115fRJ.i(); } } private void startInternal(ClientCall.Listener listener, Metadata metadata) { Compressor compressor; Preconditions.checkState(this.stream == null, "Already started"); Preconditions.checkState(!this.cancelCalled, "call was cancelled"); Preconditions.checkNotNull(listener, "observer"); Preconditions.checkNotNull(metadata, "headers"); if (this.context.isCancelled()) { this.stream = NoopClientStream.INSTANCE; this.callExecutor.execute(new ContextRunnable(this, listener) { // from class: io.grpc.internal.ClientCallImpl.1ClosedByContext final ClientCallImpl this$0; final ClientCall.Listener val$finalObserver; /* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */ { super(this.context); this.this$0 = this; this.val$finalObserver = listener; } @Override // io.grpc.internal.ContextRunnable public void runInContext() { ClientCallImpl clientCallImpl = this.this$0; clientCallImpl.closeObserver(this.val$finalObserver, Contexts.statusFromCancelled(clientCallImpl.context), new Metadata()); } }); return; } applyMethodConfig(); String compressor2 = this.callOptions.getCompressor(); if (compressor2 != null) { compressor = this.compressorRegistry.lookupCompressor(compressor2); if (compressor == null) { this.stream = NoopClientStream.INSTANCE; this.callExecutor.execute(new ContextRunnable(this, listener, compressor2) { // from class: io.grpc.internal.ClientCallImpl.1ClosedByNotFoundCompressor final ClientCallImpl this$0; final String val$compressorName; final ClientCall.Listener val$finalObserver; /* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */ { super(this.context); this.this$0 = this; this.val$finalObserver = listener; this.val$compressorName = compressor2; } @Override // io.grpc.internal.ContextRunnable public void runInContext() { this.this$0.closeObserver(this.val$finalObserver, Status.INTERNAL.withDescription(String.format("Unable to find compressor by name %s", this.val$compressorName)), new Metadata()); } }); return; } } else { compressor = Codec.Identity.NONE; } prepareHeaders(metadata, this.decompressorRegistry, compressor, this.fullStreamDecompression); Deadline effectiveDeadline = effectiveDeadline(); if (effectiveDeadline == null || !effectiveDeadline.isExpired()) { logIfContextNarrowedTimeout(effectiveDeadline, this.context.getDeadline(), this.callOptions.getDeadline()); this.stream = this.clientStreamProvider.newStream(this.method, this.callOptions, metadata, this.context); } else { this.stream = new FailingClientStream(Status.DEADLINE_EXCEEDED.withDescription("ClientCall started after deadline exceeded: ".concat(String.valueOf(effectiveDeadline))), GrpcUtil.getClientStreamTracers(this.callOptions, metadata, 0, false)); } if (this.callExecutorIsDirect) { this.stream.optimizeForDirectExecutor(); } if (this.callOptions.getAuthority() != null) { this.stream.setAuthority(this.callOptions.getAuthority()); } if (this.callOptions.getMaxInboundMessageSize() != null) { this.stream.setMaxInboundMessageSize(this.callOptions.getMaxInboundMessageSize().intValue()); } if (this.callOptions.getMaxOutboundMessageSize() != null) { this.stream.setMaxOutboundMessageSize(this.callOptions.getMaxOutboundMessageSize().intValue()); } if (effectiveDeadline != null) { this.stream.setDeadline(effectiveDeadline); } this.stream.setCompressor(compressor); boolean z = this.fullStreamDecompression; if (z) { this.stream.setFullStreamDecompression(z); } this.stream.setDecompressorRegistry(this.decompressorRegistry); this.channelCallsTracer.reportCallStarted(); this.stream.start(new ClientStreamListenerImpl(this, listener)); this.context.addListener(this.cancellationListener, MoreExecutors.directExecutor()); if (effectiveDeadline != null && !effectiveDeadline.equals(this.context.getDeadline()) && this.deadlineCancellationExecutor != null) { this.deadlineCancellationFuture = startDeadlineTimer(effectiveDeadline); } if (this.cancelListenersShouldBeRemoved) { removeContextListenerAndCancelDeadlineFuture(); } } private void applyMethodConfig() { ManagedChannelServiceConfig.MethodInfo methodInfo = (ManagedChannelServiceConfig.MethodInfo) this.callOptions.getOption(ManagedChannelServiceConfig.MethodInfo.KEY); if (methodInfo == null) { return; } if (methodInfo.timeoutNanos != null) { Deadline after = Deadline.after(methodInfo.timeoutNanos.longValue(), TimeUnit.NANOSECONDS); Deadline deadline = this.callOptions.getDeadline(); if (deadline == null || after.compareTo(deadline) < 0) { this.callOptions = this.callOptions.withDeadline(after); } } if (methodInfo.waitForReady != null) { this.callOptions = methodInfo.waitForReady.booleanValue() ? this.callOptions.withWaitForReady() : this.callOptions.withoutWaitForReady(); } if (methodInfo.maxInboundMessageSize != null) { Integer maxInboundMessageSize = this.callOptions.getMaxInboundMessageSize(); if (maxInboundMessageSize != null) { this.callOptions = this.callOptions.withMaxInboundMessageSize(Math.min(maxInboundMessageSize.intValue(), methodInfo.maxInboundMessageSize.intValue())); } else { this.callOptions = this.callOptions.withMaxInboundMessageSize(methodInfo.maxInboundMessageSize.intValue()); } } if (methodInfo.maxOutboundMessageSize != null) { Integer maxOutboundMessageSize = this.callOptions.getMaxOutboundMessageSize(); if (maxOutboundMessageSize != null) { this.callOptions = this.callOptions.withMaxOutboundMessageSize(Math.min(maxOutboundMessageSize.intValue(), methodInfo.maxOutboundMessageSize.intValue())); } else { this.callOptions = this.callOptions.withMaxOutboundMessageSize(methodInfo.maxOutboundMessageSize.intValue()); } } } private static void logIfContextNarrowedTimeout(Deadline deadline, Deadline deadline2, Deadline deadline3) { Logger logger = log; if (logger.isLoggable(Level.FINE) && deadline != null && deadline.equals(deadline2)) { StringBuilder sb = new StringBuilder(String.format("Call timeout set to '%d' ns, due to context deadline.", Long.valueOf(Math.max(0L, deadline.timeRemaining(TimeUnit.NANOSECONDS))))); if (deadline3 == null) { sb.append(" Explicit call timeout was not set."); } else { sb.append(String.format(" Explicit call timeout was '%d' ns.", Long.valueOf(deadline3.timeRemaining(TimeUnit.NANOSECONDS)))); } logger.fine(sb.toString()); } } /* JADX INFO: Access modifiers changed from: private */ public void removeContextListenerAndCancelDeadlineFuture() { this.context.removeListener(this.cancellationListener); ScheduledFuture scheduledFuture = this.deadlineCancellationFuture; if (scheduledFuture != null) { scheduledFuture.cancel(false); } } /* JADX INFO: Access modifiers changed from: package-private */ /* loaded from: classes6.dex */ public class DeadlineTimer implements Runnable { private final long remainingNanos; final ClientCallImpl this$0; DeadlineTimer(ClientCallImpl clientCallImpl, long j) { this.this$0 = clientCallImpl; this.remainingNanos = j; } @Override // java.lang.Runnable public void run() { InsightBuilder insightBuilder = new InsightBuilder(); this.this$0.stream.appendTimeoutInsight(insightBuilder); long abs = Math.abs(this.remainingNanos) / TimeUnit.SECONDS.toNanos(1L); long abs2 = Math.abs(this.remainingNanos); long nanos = TimeUnit.SECONDS.toNanos(1L); StringBuilder sb = new StringBuilder("deadline exceeded after "); if (this.remainingNanos < 0) { sb.append('-'); } sb.append(abs); sb.append(String.format(Locale.US, ".%09d", Long.valueOf(abs2 % nanos))); sb.append("s. "); sb.append(insightBuilder); this.this$0.stream.cancel(Status.DEADLINE_EXCEEDED.augmentDescription(sb.toString())); } } private ScheduledFuture startDeadlineTimer(Deadline deadline) { long timeRemaining = deadline.timeRemaining(TimeUnit.NANOSECONDS); return this.deadlineCancellationExecutor.schedule(new LogExceptionRunnable(new DeadlineTimer(this, timeRemaining)), timeRemaining, TimeUnit.NANOSECONDS); } /* JADX INFO: Access modifiers changed from: private */ public Deadline effectiveDeadline() { return min(this.callOptions.getDeadline(), this.context.getDeadline()); } private static Deadline min(Deadline deadline, Deadline deadline2) { return deadline == null ? deadline2 : deadline2 == null ? deadline : deadline.minimum(deadline2); } @Override // io.grpc.ClientCall public final void request(int i) { C13115fRJ.g(); try { boolean z = true; Preconditions.checkState(this.stream != null, "Not started"); if (i < 0) { z = false; } Preconditions.checkArgument(z, "Number requested must be non-negative"); this.stream.request(i); } finally { C13115fRJ.i(); } } @Override // io.grpc.ClientCall public final void cancel(String str, Throwable th) { C13115fRJ.g(); try { cancelInternal(str, th); } finally { C13115fRJ.i(); } } private void cancelInternal(String str, Throwable th) { Status withDescription; if (str == null && th == null) { th = new CancellationException("Cancelled without a message or cause"); log.log(Level.WARNING, "Cancelling without a message or cause is suboptimal", th); } if (this.cancelCalled) { return; } this.cancelCalled = true; try { if (this.stream != null) { Status status = Status.CANCELLED; if (str != null) { withDescription = status.withDescription(str); } else { withDescription = status.withDescription("Call cancelled without message"); } if (th != null) { withDescription = withDescription.withCause(th); } this.stream.cancel(withDescription); } } finally { removeContextListenerAndCancelDeadlineFuture(); } } @Override // io.grpc.ClientCall public final void halfClose() { C13115fRJ.g(); try { halfCloseInternal(); } finally { C13115fRJ.i(); } } private void halfCloseInternal() { Preconditions.checkState(this.stream != null, "Not started"); Preconditions.checkState(!this.cancelCalled, "call was cancelled"); Preconditions.checkState(!this.halfCloseCalled, "call already half-closed"); this.halfCloseCalled = true; this.stream.halfClose(); } @Override // io.grpc.ClientCall public final void sendMessage(ReqT reqt) { C13115fRJ.g(); try { sendMessageInternal(reqt); } finally { C13115fRJ.i(); } } private void sendMessageInternal(ReqT reqt) { Preconditions.checkState(this.stream != null, "Not started"); Preconditions.checkState(!this.cancelCalled, "call was cancelled"); Preconditions.checkState(!this.halfCloseCalled, "call was half-closed"); try { ClientStream clientStream = this.stream; if (clientStream instanceof RetriableStream) { ((RetriableStream) clientStream).sendMessage(reqt); } else { clientStream.writeMessage(this.method.streamRequest(reqt)); } if (this.unaryRequest) { return; } this.stream.flush(); } catch (Error e) { this.stream.cancel(Status.CANCELLED.withDescription("Client sendMessage() failed with Error")); throw e; } catch (RuntimeException e2) { this.stream.cancel(Status.CANCELLED.withCause(e2).withDescription("Failed to stream message")); } } @Override // io.grpc.ClientCall public final void setMessageCompression(boolean z) { Preconditions.checkState(this.stream != null, "Not started"); this.stream.setMessageCompression(z); } @Override // io.grpc.ClientCall public final boolean isReady() { if (this.halfCloseCalled) { return false; } return this.stream.isReady(); } @Override // io.grpc.ClientCall public final Attributes getAttributes() { ClientStream clientStream = this.stream; if (clientStream != null) { return clientStream.getAttributes(); } return Attributes.EMPTY; } /* JADX INFO: Access modifiers changed from: private */ public void closeObserver(ClientCall.Listener listener, Status status, Metadata metadata) { listener.onClose(status, metadata); } public final String toString() { return MoreObjects.toStringHelper(this).add("method", this.method).toString(); } /* JADX INFO: Access modifiers changed from: package-private */ /* loaded from: classes6.dex */ public class ClientStreamListenerImpl implements ClientStreamListener { private Status exceptionStatus; private final ClientCall.Listener observer; final ClientCallImpl this$0; public ClientStreamListenerImpl(ClientCallImpl clientCallImpl, ClientCall.Listener listener) { this.this$0 = clientCallImpl; this.observer = (ClientCall.Listener) Preconditions.checkNotNull(listener, "observer"); } /* JADX INFO: Access modifiers changed from: private */ public void exceptionThrown(Status status) { this.exceptionStatus = status; this.this$0.stream.cancel(status); } @Override // io.grpc.internal.ClientStreamListener public void headersRead(Metadata metadata) { fRN unused = this.this$0.tag; C13115fRJ.g(); try { this.this$0.callExecutor.execute(new ContextRunnable(this, C13115fRJ.h(), metadata) { // from class: io.grpc.internal.ClientCallImpl.ClientStreamListenerImpl.1HeadersRead final ClientStreamListenerImpl this$1; final Metadata val$headers; final C13116fRL val$link; /* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */ { super(this.this$0.context); this.this$1 = this; this.val$link = r2; this.val$headers = metadata; } @Override // io.grpc.internal.ContextRunnable public final void runInContext() { fRN unused2 = this.this$1.this$0.tag; C13115fRJ.g(); C13115fRJ.e(); try { runInternal(); } finally { fRN unused3 = this.this$1.this$0.tag; C13115fRJ.i(); } } private void runInternal() { if (this.this$1.exceptionStatus != null) { return; } try { this.this$1.observer.onHeaders(this.val$headers); } catch (Throwable th) { this.this$1.exceptionThrown(Status.CANCELLED.withCause(th).withDescription("Failed to read headers")); } } }); } finally { fRN unused2 = this.this$0.tag; C13115fRJ.i(); } } @Override // io.grpc.internal.StreamListener public void messagesAvailable(StreamListener.MessageProducer messageProducer) { fRN unused = this.this$0.tag; C13115fRJ.g(); try { this.this$0.callExecutor.execute(new ContextRunnable(this, C13115fRJ.h(), messageProducer) { // from class: io.grpc.internal.ClientCallImpl.ClientStreamListenerImpl.1MessagesAvailable final ClientStreamListenerImpl this$1; final C13116fRL val$link; final StreamListener.MessageProducer val$producer; /* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */ { super(this.this$0.context); this.this$1 = this; this.val$link = r2; this.val$producer = messageProducer; } @Override // io.grpc.internal.ContextRunnable public final void runInContext() { fRN unused2 = this.this$1.this$0.tag; C13115fRJ.g(); C13115fRJ.e(); try { runInternal(); } finally { fRN unused3 = this.this$1.this$0.tag; C13115fRJ.i(); } } private void runInternal() { if (this.this$1.exceptionStatus != null) { GrpcUtil.closeQuietly(this.val$producer); return; } while (true) { try { InputStream next = this.val$producer.next(); if (next == null) { return; } try { this.this$1.observer.onMessage(this.this$1.this$0.method.parseResponse(next)); next.close(); } catch (Throwable th) { GrpcUtil.closeQuietly(next); throw th; } } catch (Throwable th2) { GrpcUtil.closeQuietly(this.val$producer); this.this$1.exceptionThrown(Status.CANCELLED.withCause(th2).withDescription("Failed to read message.")); return; } } } }); } finally { fRN unused2 = this.this$0.tag; C13115fRJ.i(); } } @Override // io.grpc.internal.ClientStreamListener public void closed(Status status, ClientStreamListener.RpcProgress rpcProgress, Metadata metadata) { fRN unused = this.this$0.tag; C13115fRJ.g(); try { closedInternal(status, rpcProgress, metadata); } finally { fRN unused2 = this.this$0.tag; C13115fRJ.i(); } } private void closedInternal(Status status, ClientStreamListener.RpcProgress rpcProgress, Metadata metadata) { Deadline effectiveDeadline = this.this$0.effectiveDeadline(); if (status.getCode() == Status.Code.CANCELLED && effectiveDeadline != null && effectiveDeadline.isExpired()) { InsightBuilder insightBuilder = new InsightBuilder(); this.this$0.stream.appendTimeoutInsight(insightBuilder); status = Status.DEADLINE_EXCEEDED.augmentDescription("ClientCall was cancelled at or after deadline. ".concat(String.valueOf(insightBuilder))); metadata = new Metadata(); } this.this$0.callExecutor.execute(new ContextRunnable(this, C13115fRJ.h(), status, metadata) { // from class: io.grpc.internal.ClientCallImpl.ClientStreamListenerImpl.1StreamClosed final ClientStreamListenerImpl this$1; final C13116fRL val$link; final Status val$savedStatus; final Metadata val$savedTrailers; /* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */ { super(this.this$0.context); this.this$1 = this; this.val$link = r2; this.val$savedStatus = status; this.val$savedTrailers = metadata; } @Override // io.grpc.internal.ContextRunnable public final void runInContext() { fRN unused = this.this$1.this$0.tag; C13115fRJ.g(); C13115fRJ.e(); try { runInternal(); } finally { fRN unused2 = this.this$1.this$0.tag; C13115fRJ.i(); } } private void runInternal() { Status status2 = this.val$savedStatus; Metadata metadata2 = this.val$savedTrailers; if (this.this$1.exceptionStatus != null) { status2 = this.this$1.exceptionStatus; metadata2 = new Metadata(); } this.this$1.this$0.cancelListenersShouldBeRemoved = true; try { this.this$1.this$0.closeObserver(this.this$1.observer, status2, metadata2); } finally { this.this$1.this$0.removeContextListenerAndCancelDeadlineFuture(); this.this$1.this$0.channelCallsTracer.reportCallEnded(status2.isOk()); } } }); } @Override // io.grpc.internal.StreamListener public void onReady() { if (this.this$0.method.getType().clientSendsOneMessage()) { return; } fRN unused = this.this$0.tag; C13115fRJ.g(); try { this.this$0.callExecutor.execute(new ContextRunnable(this, C13115fRJ.h()) { // from class: io.grpc.internal.ClientCallImpl.ClientStreamListenerImpl.1StreamOnReady final ClientStreamListenerImpl this$1; final C13116fRL val$link; /* JADX WARN: 'super' call moved to the top of the method (can break code semantics) */ { super(this.this$0.context); this.this$1 = this; this.val$link = r2; } @Override // io.grpc.internal.ContextRunnable public final void runInContext() { fRN unused2 = this.this$1.this$0.tag; C13115fRJ.g(); C13115fRJ.e(); try { runInternal(); } finally { fRN unused3 = this.this$1.this$0.tag; C13115fRJ.i(); } } private void runInternal() { if (this.this$1.exceptionStatus != null) { return; } try { this.this$1.observer.onReady(); } catch (Throwable th) { this.this$1.exceptionThrown(Status.CANCELLED.withCause(th).withDescription("Failed to call onReady.")); } } }); } finally { fRN unused2 = this.this$0.tag; C13115fRJ.i(); } } } /* JADX INFO: Access modifiers changed from: package-private */ public final ClientCallImpl setFullStreamDecompression(boolean z) { this.fullStreamDecompression = z; return this; } /* JADX INFO: Access modifiers changed from: package-private */ public final ClientCallImpl setDecompressorRegistry(DecompressorRegistry decompressorRegistry) { this.decompressorRegistry = decompressorRegistry; return this; } /* JADX INFO: Access modifiers changed from: package-private */ public final ClientCallImpl setCompressorRegistry(CompressorRegistry compressorRegistry) { this.compressorRegistry = compressorRegistry; return this; } }