Package io.undertow.protocols.http2
Class Http2StreamSinkChannel
- java.lang.Object
-
- io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel<Http2Channel,AbstractHttp2StreamSourceChannel,AbstractHttp2StreamSinkChannel>
-
- io.undertow.protocols.http2.AbstractHttp2StreamSinkChannel
-
- io.undertow.protocols.http2.Http2StreamSinkChannel
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,java.nio.channels.Channel,java.nio.channels.GatheringByteChannel,java.nio.channels.InterruptibleChannel,java.nio.channels.WritableByteChannel,org.xnio.channels.CloseableChannel,org.xnio.channels.Configurable,org.xnio.channels.StreamSinkChannel,org.xnio.channels.SuspendableWriteChannel
- Direct Known Subclasses:
Http2DataStreamSinkChannel,Http2SettingsStreamSinkChannel
public abstract class Http2StreamSinkChannel extends AbstractHttp2StreamSinkChannel
Stream sink channel used for HTTP2 communication.- Author:
- Stuart Douglas, Flavia Rainone
-
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected PooledByteBuffer[]allocateAll(PooledByteBuffer[] allHeaderBuffers, PooledByteBuffer currentBuffer)protected voidchannelForciblyClosed()Called when a channel has been forcibly closed, and data (frames) have already been written.protected SendFrameHeadercreateFrameHeader()protected abstract SendFrameHeadercreateFrameHeaderImpl()intgetStreamId()protected intgrabFlowControlBytes(int toSend)This method should be called before sending.protected voidhandleFlushComplete(boolean channelClosed)-
Methods inherited from class io.undertow.protocols.http2.AbstractHttp2StreamSinkChannel
isLastFrame
-
Methods inherited from class io.undertow.server.protocol.framed.AbstractFramedStreamSinkChannel
awaitWritable, awaitWritable, close, flush, getAwaitWritableTimeout, getBuffer, getChannel, getCloseSetter, getIoThread, getOption, getWorker, getWriteSetter, getWriteThread, isBroken, isBufferFull, isFinalFrameQueued, isFirstDataWritten, isFlushRequiredOnEmptyBuffer, isOpen, isReadyForFlush, isWriteResumed, isWritesShutdown, markBroken, preWriteTransform, resumeWrites, resumeWritesInternal, safeToSend, send, sendInternal, setOption, shutdownWrites, supportsOption, suspendWrites, transferFrom, transferFrom, wakeupWrites, write, write, write, writeFinal, writeFinal, writeFinal
-
-
-
-
Method Detail
-
getStreamId
public int getStreamId()
-
createFrameHeaderImpl
protected abstract SendFrameHeader createFrameHeaderImpl()
-
channelForciblyClosed
protected void channelForciblyClosed() throws java.io.IOExceptionDescription copied from class:AbstractFramedStreamSinkChannelCalled when a channel has been forcibly closed, and data (frames) have already been written. The action this should take is protocol dependent, e.g. for SPDY a RST_STREAM should be sent, for websockets the channel should be closed. By default this will just close the underlying channel- Overrides:
channelForciblyClosedin classAbstractFramedStreamSinkChannel<Http2Channel,AbstractHttp2StreamSourceChannel,AbstractHttp2StreamSinkChannel>- Throws:
java.io.IOException
-
createFrameHeader
protected final SendFrameHeader createFrameHeader()
-
handleFlushComplete
protected void handleFlushComplete(boolean channelClosed)
-
grabFlowControlBytes
protected int grabFlowControlBytes(int toSend)
This method should be called before sending. It will return the amount of data that can be sent, taking into account the stream and connection flow control windows, and the toSend parameter.It will decrement the flow control windows by the amount that can be sent, so this method should only be called as a frame is being queued.
- Returns:
- The number of bytes that can be sent
-
allocateAll
protected PooledByteBuffer[] allocateAll(PooledByteBuffer[] allHeaderBuffers, PooledByteBuffer currentBuffer)
-
-