@UnstableApi public class StreamBufferingEncoder extends DecoratingHttp2ConnectionEncoder
Http2ConnectionEncoder
,将所有方法调用分派到另一个Http2ConnectionEncoder
,直到达到SETTINGS_MAX_CONCURRENT_STREAMS
。
当这个限制被击中时,不是拒绝任何新的流,而是实施缓冲新创建的流及其相应的帧。 一旦活动流关闭或并发流的最大数量增加,该编码器将自动尝试清空其缓冲区并尽可能多地创建新的流。
如果从远程端点接收到GOAWAY
帧,则ID小于指定lastStreamId
流的所有缓冲写入将立即失败,并显示StreamBufferingEncoder.Http2GoAwayException
。
如果通道/编码器关闭,则所有新的和缓冲的写入将立即失败,并显示StreamBufferingEncoder.Http2ChannelClosedException
。
该实现使得缓冲大部分是透明的,并且预计将被用作DefaultHttp2ConnectionEncoder
的嵌入式装饰器。
Modifier and Type | Class and Description |
---|---|
static class |
StreamBufferingEncoder.Http2ChannelClosedException
如果由于编码器关闭而导致缓冲流终止,则抛出。
|
static class |
StreamBufferingEncoder.Http2GoAwayException
如果缓冲流由于收到 GOAWAY 而终止,则由StreamBufferingEncoder 抛出。
|
Http2FrameWriter.Configuration
Constructor and Description |
---|
StreamBufferingEncoder(Http2ConnectionEncoder delegate) |
StreamBufferingEncoder(Http2ConnectionEncoder delegate, int initialMaxConcurrentStreams) |
Modifier and Type | Method and Description |
---|---|
void |
close()
关闭此作者并释放所有分配的资源。
|
int |
numBufferedStreams()
指示当前缓冲的流的数量,等待创建。
|
void |
remoteSettings(Http2Settings settings)
设置HTTP / 2连接的远程端点的设置。
|
ChannelFuture |
writeData(ChannelHandlerContext ctx, int streamId, ByteBuf data, int padding, boolean endOfStream, ChannelPromise promise)
将
DATA 帧写入远程端点。
|
ChannelFuture |
writeHeaders(ChannelHandlerContext ctx, int streamId, Http2Headers headers, int padding, boolean endStream, ChannelPromise promise)
将HEADERS帧写入远程端点。
|
ChannelFuture |
writeHeaders(ChannelHandlerContext ctx, int streamId, Http2Headers headers, int streamDependency, short weight, boolean exclusive, int padding, boolean endOfStream, ChannelPromise promise)
将指定优先级的HEADERS帧写入远程端点。
|
ChannelFuture |
writeRstStream(ChannelHandlerContext ctx, int streamId, long errorCode, ChannelPromise promise)
将RST_STREAM帧写入远程端点。
|
connection, flowController, frameWriter, lifecycleManager, pollSentSettings
configuration, writeFrame, writeGoAway, writePing, writePriority, writePushPromise, writeSettings, writeSettingsAck, writeWindowUpdate
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
writeFrame
configuration, writeGoAway, writePing, writePriority, writePushPromise, writeSettings, writeSettingsAck, writeWindowUpdate
public StreamBufferingEncoder(Http2ConnectionEncoder delegate)
public StreamBufferingEncoder(Http2ConnectionEncoder delegate, int initialMaxConcurrentStreams)
public int numBufferedStreams()
public ChannelFuture writeHeaders(ChannelHandlerContext ctx, int streamId, Http2Headers headers, int padding, boolean endStream, ChannelPromise promise)
Http2FrameWriter
writeHeaders
,界面
Http2FrameWriter
writeHeaders
在课程
DecoratingHttp2FrameWriter
ctx
- 用于书写的上下文。
streamId
- 要发送帧的流。
headers
- 要发送的标题。
padding
- 应添加的其他字节以遮盖真实内容大小。
必须介于0和256(含)之间。
endStream
- 指示这是否是为流发送的最后一帧。
promise
- 写作的承诺。
The header block MUST be processed to ensure a consistent connection state, unless the connection is closed.
如果这个调用修改了HPACK头部状态,你必须抛出连接错误。
如果这一呼吁没有修改HPACK头状态,你可以自由地抛出一个流错误。
public ChannelFuture writeHeaders(ChannelHandlerContext ctx, int streamId, Http2Headers headers, int streamDependency, short weight, boolean exclusive, int padding, boolean endOfStream, ChannelPromise promise)
Http2FrameWriter
writeHeaders
在界面
Http2FrameWriter
writeHeaders
在课程
DecoratingHttp2FrameWriter
ctx
- 用于书写的上下文。
streamId
- 要发送帧的流。
headers
- 要发送的标题。
streamDependency
- 此流应该依赖的流,如果应依赖于连接,则为0。
weight
- 这个流的权重。
exclusive
- 此流是否应该是其父项的排他依赖项。
padding
- 应添加的其他字节以掩盖真实的内容大小。
必须介于0和256(含)之间。
endOfStream
- 指示这是否是流的最后一个帧。
promise
- 写作的承诺。
The header block MUST be processed to ensure a consistent connection state, unless the connection is closed.
如果这个调用修改了HPACK头部状态,你必须抛出连接错误。
如果这一呼吁没有修改HPACK头状态,你可以自由地抛出一个流错误。
public ChannelFuture writeRstStream(ChannelHandlerContext ctx, int streamId, long errorCode, ChannelPromise promise)
Http2FrameWriter
复制的描述
writeRstStream
接口
Http2FrameWriter
writeRstStream
在课程
DecoratingHttp2FrameWriter
ctx
- 用于书写的上下文。
streamId
- 要发送帧的流。
errorCode
- 指示故障性质的错误代码。
promise
- 写作的承诺。
public ChannelFuture writeData(ChannelHandlerContext ctx, int streamId, ByteBuf data, int padding, boolean endOfStream, ChannelPromise promise)
Http2DataWriter
复制的描述
DATA
帧写入远程端点。
这将导致一个或多个帧被写入上下文。
writeData
接口
Http2DataWriter
writeData
在课程
DecoratingHttp2FrameWriter
ctx
- 用于书写的上下文。
streamId
- 要发送帧的流。
data
- 帧的有效载荷。
这将通过这种方法发布。
padding
- 应添加的其他字节以掩盖真实的内容大小。
必须介于0和256(含)之间。
一个1字节的填充被编码为值为0的填充长度字段。一个256字节的填充被编码为填充长度字段,值255和填充字节255被附加到帧的末尾。
endOfStream
- 指示这是否是流发送的最后一帧。
promise
- 写作的承诺。
public void remoteSettings(Http2Settings settings) throws Http2Exception
Http2ConnectionEncoder
复制的描述
remoteSettings
在界面
Http2ConnectionEncoder
remoteSettings
在课程
DecoratingHttp2ConnectionEncoder
Http2Exception
public void close()
Http2FrameWriter
close
,界面
Http2FrameWriter
close
接口
java.io.Closeable
close
在界面
java.lang.AutoCloseable
close
在课程
DecoratingHttp2FrameWriter
Copyright © 2008–2018 The Netty Project. All rights reserved.