@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.