@UnstableApi public class DefaultHttp2LocalFlowController extends java.lang.Object implements Http2LocalFlowController
Http2LocalFlowController
。
这个类不是线程安全的。 假设是所有方法都必须从单个线程中调用。 通常这个线程是由这个类管理的ChannelHandlerContext
的事件循环线程。
Modifier and Type | Field and Description |
---|---|
static float |
DEFAULT_WINDOW_UPDATE_RATIO
窗口大小与初始窗口大小的默认比率,低于此大小将发送
WINDOW_UPDATE 以扩展窗口。
|
Constructor and Description |
---|
DefaultHttp2LocalFlowController(Http2Connection connection) |
DefaultHttp2LocalFlowController(Http2Connection connection, float windowUpdateRatio, boolean autoRefillConnectionWindow)
用给定的设置构造一个控制器。
|
Modifier and Type | Method and Description |
---|---|
void |
channelHandlerContext(ChannelHandlerContext ctx)
设置应用流量控制的 ChannelHandlerContext 。
|
boolean |
consumeBytes(Http2Stream stream, int numBytes)
表示应用程序已经为给定流消耗了大量字节,因此准备从远程端点接收更多数据。
|
DefaultHttp2LocalFlowController |
frameWriter(Http2FrameWriter frameWriter)
将写入器设置为用于发送
WINDOW_UPDATE 帧。
|
void |
incrementWindowSize(Http2Stream stream, int delta)
按给定的增量增加流的流量控制窗口的大小。
|
int |
initialWindowSize()
获取用作新流流控制窗口基础的连接范围初始流控制窗口大小。
|
int |
initialWindowSize(Http2Stream stream)
获取给定流的初始流量控制窗口大小。
|
void |
initialWindowSize(int newWindowSize)
设置连接范围的初始流量控制窗口并按增量更新所有流窗口(但不是连接流窗口)。
|
void |
receiveFlowControlledFrame(Http2Stream stream, ByteBuf data, int padding, boolean endOfStream)
从远程端点
DATA 站
DATA 帧,并为
stream 以及连接应用流量控制策略。
|
int |
unconsumedBytes(Http2Stream stream)
已接收但尚未由应用程序使用的给定流的字节数。
|
int |
windowSize(Http2Stream stream)
获取当前可用于发送/接收受流控制控制的帧的给定流的流量控制窗口部分。
|
float |
windowUpdateRatio()
窗口更新比率用于确定何时必须发送窗口更新。
|
void |
windowUpdateRatio(float ratio)
窗口更新比率用于确定何时必须发送窗口更新。
|
float |
windowUpdateRatio(Http2Stream stream)
窗口更新比率用于确定何时必须发送窗口更新。
|
void |
windowUpdateRatio(Http2Stream stream, float ratio)
窗口更新比率用于确定何时必须发送窗口更新。
|
public static final float DEFAULT_WINDOW_UPDATE_RATIO
WINDOW_UPDATE
以展开窗口。
public DefaultHttp2LocalFlowController(Http2Connection connection)
public DefaultHttp2LocalFlowController(Http2Connection connection, float windowUpdateRatio, boolean autoRefillConnectionWindow)
connection
- 连接状态。
windowUpdateRatio
- 发送
WINDOW_UPDATE
的窗口百分比。
autoRefillConnectionWindow
- 如果是true
,则有效地禁用流控制算法中的连接窗口,因为它们将始终自动填充而不需要应用程序消耗字节。
启用后,您必须准备排队的最大字节数与maximum number of concurrent streams * the initial window size per stream
( SETTINGS_MAX_CONCURRENT_STREAMS SETTINGS_INITIAL_WINDOW_SIZE )成比例。
public DefaultHttp2LocalFlowController frameWriter(Http2FrameWriter frameWriter)
Http2LocalFlowController
WINDOW_UPDATE
帧。
这必须在收到任何流量控制数据之前调用。
frameWriter
在界面
Http2LocalFlowController
frameWriter
- HTTP / 2帧
frameWriter
。
public void channelHandlerContext(ChannelHandlerContext ctx)
Http2FlowController
ChannelHandlerContext
。
必须调用这个来正确初始化Http2FlowController
。 不调用它被认为是一个编程错误。
channelHandlerContext
在界面
Http2FlowController
ctx
- 为其应用流量控制的ChannelHandlerContext
。
public void initialWindowSize(int newWindowSize) throws Http2Exception
Http2FlowController
代表SETTINGS_INITIAL_WINDOW_SIZE的值。 这种方法只能由Netty(不是用户)作为接收SETTINGS
帧的结果来SETTINGS
。
initialWindowSize
在界面
Http2FlowController
newWindowSize
- 新的初始窗口大小。
Http2Exception
- 如果发生任何与协议相关的错误,则抛出该错误。
public int initialWindowSize()
Http2FlowController
代表SETTINGS_INITIAL_WINDOW_SIZE的值。 此方法返回的初始值必须是Http2CodecUtil.DEFAULT_WINDOW_SIZE
。
initialWindowSize
在界面
Http2FlowController
public int windowSize(Http2Stream stream)
Http2FlowController
windowSize
在界面
Http2FlowController
public int initialWindowSize(Http2Stream stream)
Http2LocalFlowController
复制的描述
Http2FlowController.initialWindowSize()
- Http2FlowController.windowSize(Http2Stream)
来计算。
initialWindowSize
,界面
Http2LocalFlowController
public void incrementWindowSize(Http2Stream stream, int delta) throws Http2Exception
Http2FlowController
在Http2RemoteFlowController
的情况下,在从远程端点接收到WINDOW_UPDATE
帧时调用这个帧,以反映窗口大小的变化。
对于Http2LocalFlowController
,可以调用此方法来请求扩展由此端点发布的窗口大小。 然而,到WINDOW_UPDATE
实际发送的时间由实施决定。
incrementWindowSize
在界面
Http2FlowController
stream
- 主题流。
使用Http2Connection.connectionStream()
来请求连接窗口的大小。
delta
- 流量控制窗口大小的变化。
Http2Exception
- 如果发生与协议有关的错误,则抛出。
public boolean consumeBytes(Http2Stream stream, int numBytes) throws Http2Exception
Http2LocalFlowController
WINDOW_UPDATE
以恢复流的一部分流量控制窗口。
如果stream
是null
或关闭(即Http2Stream.state()
方法返回Http2Stream.State.CLOSED
),则调用此方法不起作用。
consumeBytes
在界面
Http2LocalFlowController
stream
- 应该释放窗口空间的流。
不能使用连接流对象。
如果stream
是null
或关闭(即Http2Stream.state()
方法返回Http2Stream.State.CLOSED
),则调用此方法不起作用。
numBytes
- 要返回到流量控制窗口的字节数。
WINDOW_UPDATE
则返回true,否则返回false。
Http2Exception
- 如果返回的字节数超过流的
Http2LocalFlowController.unconsumedBytes(Http2Stream)
。
public int unconsumedBytes(Http2Stream stream)
Http2LocalFlowController
unconsumedBytes
接口
Http2LocalFlowController
stream
- 应该释放窗口空间的流。
public void windowUpdateRatio(float ratio)
ratio
- 检查
WINDOW_UPDATE
是否需要确定新流时使用的比率。
java.lang.IllegalArgumentException
- 如果比率超出范围(0,1)。
public float windowUpdateRatio()
public void windowUpdateRatio(Http2Stream stream, float ratio) throws Http2Exception
streamId
。
请注意,调用者负责确保在调用之前发送初始帧SETTINGS
。 它会被认为是Http2Error.PROTOCOL_ERROR
如果WINDOW_UPDATE
通过该方法的初始之前生成SETTINGS
帧被发送。
stream
-流为其
ratio
适用。
ratio
- 检查确定是否需要
WINDOW_UPDATE
时使用的比率。
Http2Exception
- 如果在生成
WINDOW_UPDATE
帧时发生协议错误
public float windowUpdateRatio(Http2Stream stream) throws Http2Exception
streamId
。
Http2Exception
- 如果找不到对应于
stream
流。
public void receiveFlowControlledFrame(Http2Stream stream, ByteBuf data, int padding, boolean endOfStream) throws Http2Exception
Http2LocalFlowController
DATA
站DATA
帧,并为stream
以及连接应用流量控制策略。
如果任何流量控制策略被违反,则立即引发异常,否则该帧被认为具有“通过”流量控制。
如果stream
为null
或关闭,则流量控制只应用于连接窗口,并立即消耗字节。
receiveFlowControlledFrame
在界面
Http2LocalFlowController
stream
- 接收帧的主题流。
不能使用连接流对象。
如果stream
为null
或关闭,则只应将流量控制应用于连接窗口,并立即消耗字节。
data
- 帧的有效载荷缓冲区。
padding
- 应添加的其他字节以掩盖真实的内容大小。
必须介于0和256(含)之间。
endOfStream
- 指示这是否是来自此流的远程端点的最后一个帧。
Http2Exception
- 遇到任何流量控制错误。
Copyright © 2008–2018 The Netty Project. All rights reserved.