Package io.grpc.internal
Class Http2ClientStreamTransportState
java.lang.Object
io.grpc.internal.AbstractStream.TransportState
io.grpc.internal.AbstractClientStream.TransportState
io.grpc.internal.Http2ClientStreamTransportState
- All Implemented Interfaces:
ApplicationThreadDeframer.TransportExecutor
,ApplicationThreadDeframerListener.TransportExecutor
,MessageDeframer.Listener
- Direct Known Subclasses:
NettyClientStream.TransportState
Base implementation for client streams using HTTP2 as the transport.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Charset
private boolean
private static final InternalMetadata.TrustedAsciiMarshaller
<Integer> Metadata marshaller for HTTP status lines.private static final Metadata.Key
<Integer> private Status
private Metadata
Fields inherited from class io.grpc.internal.AbstractStream.TransportState
DEFAULT_ONREADY_THRESHOLD
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
Http2ClientStreamTransportState
(int maxMessageSize, StatsTraceContext statsTraceCtx, TransportTracer transportTracer, CallOptions options) -
Method Summary
Modifier and TypeMethodDescriptionprivate static Charset
extractCharset
(Metadata headers) Inspect the raw metadata and figure out what charset is being used.protected abstract void
http2ProcessingFailed
(Status status, boolean stopDelivery, Metadata trailers) Called to process a failure in HTTP/2 processing.private Status
statusFromTrailers
(Metadata trailers) Extract the response status from trailers.private static void
stripTransportDetails
(Metadata metadata) Strip HTTP transport implementation details so they don't leak via metadata into the application layer.protected void
transportDataReceived
(ReadableBuffer frame, boolean endOfStream) Called by subclasses whenever a data frame is received from the transport.protected void
transportHeadersReceived
(Metadata headers) Called by subclasses wheneverHeaders
are received from the transport.protected void
transportTrailersReceived
(Metadata trailers) Called by subclasses for the terminal trailer metadata on a stream.private Status
validateInitialMetadata
(Metadata headers) Inspect initial headers to make sure they conform to HTTP and gRPC, returning aStatus
on failure.Methods inherited from class io.grpc.internal.AbstractClientStream.TransportState
deframerClosed, inboundDataReceived, inboundHeadersReceived, inboundTrailersReceived, isOutboundClosed, listener, setListener, transportReportStatus, transportReportStatus
Methods inherited from class io.grpc.internal.AbstractStream.TransportState
closeDeframer, deframe, getStatsTraceContext, getTransportTracer, isStreamDeallocated, messagesAvailable, onSentBytes, onStreamAllocated, onStreamDeallocated, optimizeForDirectExecutor, requestMessagesFromDeframerForTesting, setDecompressor, setFullStreamDecompressor, setMaxInboundMessageSize, setOnReadyThreshold
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface io.grpc.internal.ApplicationThreadDeframerListener.TransportExecutor
runOnTransportThread
Methods inherited from interface io.grpc.internal.MessageDeframer.Listener
bytesRead, deframeFailed
-
Field Details
-
HTTP_STATUS_MARSHALLER
Metadata marshaller for HTTP status lines. -
HTTP2_STATUS
-
transportError
-
transportErrorMetadata
-
errorCharset
-
headersReceived
private boolean headersReceived
-
-
Constructor Details
-
Http2ClientStreamTransportState
protected Http2ClientStreamTransportState(int maxMessageSize, StatsTraceContext statsTraceCtx, TransportTracer transportTracer, CallOptions options)
-
-
Method Details
-
http2ProcessingFailed
protected abstract void http2ProcessingFailed(Status status, boolean stopDelivery, Metadata trailers) Called to process a failure in HTTP/2 processing. It should notify the transport to cancel the stream and calltransportReportStatus()
. -
transportHeadersReceived
Called by subclasses wheneverHeaders
are received from the transport.- Parameters:
headers
- the received headers
-
transportDataReceived
Called by subclasses whenever a data frame is received from the transport.- Parameters:
frame
- the received data frameendOfStream
-true
if there will be no more data received for this stream
-
transportTrailersReceived
Called by subclasses for the terminal trailer metadata on a stream.- Parameters:
trailers
- the received terminal trailer metadata
-
statusFromTrailers
Extract the response status from trailers. -
validateInitialMetadata
Inspect initial headers to make sure they conform to HTTP and gRPC, returning aStatus
on failure.- Returns:
- status with description of failure, or
null
when valid
-
extractCharset
Inspect the raw metadata and figure out what charset is being used. -
stripTransportDetails
Strip HTTP transport implementation details so they don't leak via metadata into the application layer.
-