@VisibleForTesting static void prepareHeaders( Metadata headers, CallOptions callOptions, String userAgent, DecompressorRegistry decompressorRegistry, Compressor compressor) { // Fill out the User-Agent header. headers.removeAll(USER_AGENT_KEY); if (userAgent != null) { headers.put(USER_AGENT_KEY, userAgent); } headers.removeAll(MESSAGE_ENCODING_KEY); if (compressor != Codec.Identity.NONE) { headers.put(MESSAGE_ENCODING_KEY, compressor.getMessageEncoding()); } headers.removeAll(MESSAGE_ACCEPT_ENCODING_KEY); if (!decompressorRegistry.getAdvertisedMessageEncodings().isEmpty()) { String acceptEncoding = ACCEPT_ENCODING_JOINER.join(decompressorRegistry.getAdvertisedMessageEncodings()); headers.put(MESSAGE_ACCEPT_ENCODING_KEY, acceptEncoding); } }
private void writeStatusToTrailers(Status status) { stashedTrailers.removeAll(Status.CODE_KEY); stashedTrailers.removeAll(Status.MESSAGE_KEY); stashedTrailers.put(Status.CODE_KEY, status); if (status.getDescription() != null) { stashedTrailers.put(Status.MESSAGE_KEY, status.getDescription()); } }
@Override public final void writeHeaders(Metadata headers) { Preconditions.checkNotNull(headers, "headers"); headers.removeAll(MESSAGE_ENCODING_KEY); if (messageEncoding != null) { headers.put(MESSAGE_ENCODING_KEY, messageEncoding); } headers.removeAll(MESSAGE_ACCEPT_ENCODING_KEY); if (!decompressorRegistry().getAdvertisedMessageEncodings().isEmpty()) { String acceptEncoding = ACCEPT_ENCODING_JOINER.join(decompressorRegistry().getAdvertisedMessageEncodings()); headers.put(MESSAGE_ACCEPT_ENCODING_KEY, acceptEncoding); } outboundPhase(Phase.HEADERS); headersSent = true; internalSendHeaders(headers); outboundPhase(Phase.MESSAGE); }
/** Based on the deadline, calculate and set the timeout to the given headers. */ private static void updateTimeoutHeaders( @Nullable Deadline effectiveDeadline, @Nullable Deadline callDeadline, @Nullable Deadline outerCallDeadline, Metadata headers) { headers.removeAll(TIMEOUT_KEY); if (effectiveDeadline == null) { return; } long effectiveTimeout = max(0, effectiveDeadline.timeRemaining(TimeUnit.NANOSECONDS)); headers.put(TIMEOUT_KEY, effectiveTimeout); logIfContextNarrowedTimeout( effectiveTimeout, effectiveDeadline, outerCallDeadline, callDeadline); }