@UnstableApi public class Http2MultiplexCodec extends Http2FrameCodec
When a new stream is created, a new
Channel is created for it. Applications send and
Http2StreamFrames on the created channel.
ByteBufs cannot be processed by the channel;
all writes that reach the head of the pipeline must be an instance of
Http2StreamFrame. Writes that reach
the head of the pipeline are processed directly by this handler and cannot be intercepted.
The child channel will be notified of user events that impact the stream, such as
Http2ResetFrame, as soon as they occur. Although
Http2ResetFrame signify that the remote is ignoring further
communication, closing of the channel is delayed until any inbound queue is drained with
Channel.read(), which follows the default behavior of channels in Netty. Applications are
free to close the channel in response to such events if they don't have use for any queued
messages. Any connection level events like
will be processed internally and also propagated down the pipeline for other handlers to act on.
Outbound streams are supported via the
Http2StreamFrames implement the
ReferenceCountedinterface, as they carry reference counted objects (e.g.
ByteBufs). The multiplex codec will call
ReferenceCounted.retain()before propagating a reference counted object through the pipeline, and thus an application handler needs to release such an object after having consumed it. For more information on reference counting take a look at http://netty.io/wiki/reference-counted-objects.html
EventLoop. Therefore, an active channel does not map to an active HTTP/2 stream immediately. Only once a
Http2HeadersFramehas been successfully sent or received, does the channel map to an active HTTP/2 stream. In case it is not possible to open a new HTTP/2 stream (i.e. due to the maximum number of active streams being exceeded), the child channel receives an exception indicating the cause and is closed immediately thereafter.
ChannelHandlers are free to ignore the channel's writability, in which case the excessive writes will be buffered by the parent channel. It's important to note that only
Http2DataFrames are subject to HTTP/2 flow control.
|Modifier and Type||Method and Description|
Notifies any child streams of the read completion.
Gets called after the
handlerAdded, isGracefulShutdownComplete, onConnectionError, onStreamError, userEventTriggered, write
bind, channelActive, channelInactive, channelWritabilityChanged, close, closeStream, closeStreamLocal, closeStreamRemote, connect, connection, decode, decoder, deregister, disconnect, encoder, exceptionCaught, flush, frameWriter, goAway, gracefulShutdownTimeoutMillis, gracefulShutdownTimeoutMillis, handleServerHeaderDecodeSizeError, onError, onHttpClientUpgrade, onHttpServerUpgrade, read, resetStream
actualReadableBytes, callDecode, decodeLast, discardSomeReadBytes, handlerRemoved, internalBuffer, isSingleDecode, setCumulator, setDiscardAfterReads, setSingleDecode
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
public final void handlerAdded0(ChannelHandlerContext ctx) throws java.lang.Exception
public final void handlerRemoved0(ChannelHandlerContext ctx) throws java.lang.Exception
ByteToMessageDecoderwas removed from the actual context and it doesn't handle events anymore.
public final void channelReadComplete(ChannelHandlerContext ctx) throws java.lang.Exception
public final void channelRead(ChannelHandlerContext ctx, java.lang.Object msg) throws java.lang.Exception
ChannelHandlerContext.fireChannelRead(Object)to forward to the next
ChannelPipeline. Sub-classes may override this method to change behavior.
Copyright © 2008–2018 The Netty Project. All rights reserved.