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 Charsetprivate booleanprivate static final InternalMetadata.TrustedAsciiMarshaller<Integer> Metadata marshaller for HTTP status lines.private static final Metadata.Key<Integer> private Statusprivate MetadataFields inherited from class io.grpc.internal.AbstractStream.TransportState
DEFAULT_ONREADY_THRESHOLD -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedHttp2ClientStreamTransportState(int maxMessageSize, StatsTraceContext statsTraceCtx, TransportTracer transportTracer, CallOptions options) -
Method Summary
Modifier and TypeMethodDescriptionprivate static CharsetextractCharset(Metadata headers) Inspect the raw metadata and figure out what charset is being used.protected abstract voidhttp2ProcessingFailed(Status status, boolean stopDelivery, Metadata trailers) Called to process a failure in HTTP/2 processing.private StatusstatusFromTrailers(Metadata trailers) Extract the response status from trailers.private static voidstripTransportDetails(Metadata metadata) Strip HTTP transport implementation details so they don't leak via metadata into the application layer.protected voidtransportDataReceived(ReadableBuffer frame, boolean endOfStream) Called by subclasses whenever a data frame is received from the transport.protected voidtransportHeadersReceived(Metadata headers) Called by subclasses wheneverHeadersare received from the transport.protected voidtransportTrailersReceived(Metadata trailers) Called by subclasses for the terminal trailer metadata on a stream.private StatusvalidateInitialMetadata(Metadata headers) Inspect initial headers to make sure they conform to HTTP and gRPC, returning aStatuson failure.Methods inherited from class io.grpc.internal.AbstractClientStream.TransportState
deframerClosed, inboundDataReceived, inboundHeadersReceived, inboundTrailersReceived, isOutboundClosed, listener, setListener, transportReportStatus, transportReportStatusMethods inherited from class io.grpc.internal.AbstractStream.TransportState
closeDeframer, deframe, getStatsTraceContext, getTransportTracer, isStreamDeallocated, messagesAvailable, onSentBytes, onStreamAllocated, onStreamDeallocated, optimizeForDirectExecutor, requestMessagesFromDeframerForTesting, setDecompressor, setFullStreamDecompressor, setMaxInboundMessageSize, setOnReadyThresholdMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.grpc.internal.ApplicationThreadDeframerListener.TransportExecutor
runOnTransportThreadMethods 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 wheneverHeadersare 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-trueif 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 aStatuson failure.- Returns:
- status with description of failure, or
nullwhen 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.
-