@UnstableApi public interface Http2RemoteFlowController extends Http2FlowController
Http2FlowController
for controlling the flow of outbound DATA
frames to the remote
endpoint.限定符和类型 | 接口和说明 |
---|---|
static interface |
Http2RemoteFlowController.FlowControlled
Implementations of this interface are used to progressively write chunks of the underlying
payload to the stream.
|
static interface |
Http2RemoteFlowController.Listener
Listener to the number of flow-controlled bytes written per stream.
|
限定符和类型 | 方法和说明 |
---|---|
void |
addFlowControlled(Http2Stream stream,
Http2RemoteFlowController.FlowControlled payload)
Queues a payload for transmission to the remote endpoint.
|
ChannelHandlerContext |
channelHandlerContext()
Get the
ChannelHandlerContext for which to apply flow control on. |
void |
channelWritabilityChanged()
Notification that the writability of
channelHandlerContext() has changed. |
boolean |
hasFlowControlled(Http2Stream stream)
Determine if
stream has any Http2RemoteFlowController.FlowControlled frames currently queued. |
boolean |
isWritable(Http2Stream stream)
Determine if the
stream has bytes remaining for use in the flow control window. |
void |
listener(Http2RemoteFlowController.Listener listener)
Set the active listener on the flow-controller.
|
void |
updateDependencyTree(int childStreamId,
int parentStreamId,
short weight,
boolean exclusive)
Explicitly update the dependency tree.
|
void |
writePendingBytes()
Write all data pending in the flow controller up to the flow-control limits.
|
channelHandlerContext, incrementWindowSize, initialWindowSize, initialWindowSize, windowSize
ChannelHandlerContext channelHandlerContext()
ChannelHandlerContext
for which to apply flow control on.
This is intended for us by Http2RemoteFlowController.FlowControlled
implementations only. Use with caution.
ChannelHandlerContext
for which to apply flow control on.void addFlowControlled(Http2Stream stream, Http2RemoteFlowController.FlowControlled payload)
Writes do not actually occur until writePendingBytes()
is called.
stream
- the subject stream. Must not be the connection stream object.payload
- payload to write subject to flow-control accounting and ordering rules.boolean hasFlowControlled(Http2Stream stream)
stream
has any Http2RemoteFlowController.FlowControlled
frames currently queued.stream
- the stream to check if it has flow controlled frames.true
if stream
has any Http2RemoteFlowController.FlowControlled
frames currently queued.void writePendingBytes() throws Http2Exception
Http2Exception
- throws if a protocol-related error occurred.void listener(Http2RemoteFlowController.Listener listener)
listener
- to notify when the a write occurs, can be null
.boolean isWritable(Http2Stream stream)
stream
has bytes remaining for use in the flow control window.
Note that this method respects channel writability. The channel must be writable for this method to
return true
.
stream
- The stream to test.true
if the stream
has bytes remaining for use in the flow control window and the
channel is writable, false
otherwise.void channelWritabilityChanged() throws Http2Exception
channelHandlerContext()
has changed.Http2Exception
- If any writes occur as a result of this call and encounter errors.void updateDependencyTree(int childStreamId, int parentStreamId, short weight, boolean exclusive)
childStreamId
- The stream identifier associated with the child stream.parentStreamId
- The stream identifier associated with the parent stream. May be 0
,
to make childStreamId
and immediate child of the connection.weight
- The weight which is used relative to other child streams for parentStreamId
. This value
must be between 1 and 256 (inclusive).exclusive
- If childStreamId
should be the exclusive dependency of parentStreamId
.