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
public abstract class Http2ClientStreamTransportState extends AbstractClientStream.TransportState
Base implementation for client streams using HTTP2 as the transport.
-
-
Field Summary
Fields Modifier and Type Field Description private java.nio.charset.CharseterrorCharsetprivate booleanheadersReceivedprivate static InternalMetadata.TrustedAsciiMarshaller<java.lang.Integer>HTTP_STATUS_MARSHALLERMetadata marshaller for HTTP status lines.private static Metadata.Key<java.lang.Integer>HTTP2_STATUSprivate StatustransportErrorprivate MetadatatransportErrorMetadata-
Fields inherited from class io.grpc.internal.AbstractStream.TransportState
DEFAULT_ONREADY_THRESHOLD
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedHttp2ClientStreamTransportState(int maxMessageSize, StatsTraceContext statsTraceCtx, TransportTracer transportTracer, CallOptions options)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description private static java.nio.charset.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, 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 Detail
-
HTTP_STATUS_MARSHALLER
private static final InternalMetadata.TrustedAsciiMarshaller<java.lang.Integer> HTTP_STATUS_MARSHALLER
Metadata marshaller for HTTP status lines.
-
HTTP2_STATUS
private static final Metadata.Key<java.lang.Integer> HTTP2_STATUS
-
transportError
private Status transportError
-
transportErrorMetadata
private Metadata transportErrorMetadata
-
errorCharset
private java.nio.charset.Charset errorCharset
-
headersReceived
private boolean headersReceived
-
-
Constructor Detail
-
Http2ClientStreamTransportState
protected Http2ClientStreamTransportState(int maxMessageSize, StatsTraceContext statsTraceCtx, TransportTracer transportTracer, CallOptions options)
-
-
Method Detail
-
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
protected void transportHeadersReceived(Metadata headers)
Called by subclasses wheneverHeadersare received from the transport.- Parameters:
headers- the received headers
-
transportDataReceived
protected void transportDataReceived(ReadableBuffer frame, boolean endOfStream)
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
protected void transportTrailersReceived(Metadata trailers)
Called by subclasses for the terminal trailer metadata on a stream.- Parameters:
trailers- the received terminal trailer metadata
-
statusFromTrailers
private Status statusFromTrailers(Metadata trailers)
Extract the response status from trailers.
-
validateInitialMetadata
@Nullable private Status validateInitialMetadata(Metadata headers)
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
private static java.nio.charset.Charset extractCharset(Metadata headers)
Inspect the raw metadata and figure out what charset is being used.
-
stripTransportDetails
private static void stripTransportDetails(Metadata metadata)
Strip HTTP transport implementation details so they don't leak via metadata into the application layer.
-
-