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
- Author:
- Stuart Douglas
-
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected PooledByteBuffer[]
allocateAll(PooledByteBuffer[] allHeaderBuffers, PooledByteBuffer currentBuffer)
protected void
channelForciblyClosed()
Called when a channel has been forcibly closed, and data (frames) have already been written.protected SendFrameHeader
createFrameHeader()
protected abstract SendFrameHeader
createFrameHeaderImpl()
int
getStreamId()
protected int
grabFlowControlBytes(int toSend)
This method should be called before sending.protected void
handleFlushComplete(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, 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.IOException
Description copied from class:AbstractFramedStreamSinkChannel
Called 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:
channelForciblyClosed
in 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)
-
-