forked from quic-go/quic-go
In IETF QUIC, stream 0 is a valid stream ID, and is not used to encode WINDOW_UPDATEs for the connection any more.
30 lines
1.3 KiB
Go
30 lines
1.3 KiB
Go
package flowcontrol
|
|
|
|
import "github.com/lucas-clemente/quic-go/internal/protocol"
|
|
import "github.com/lucas-clemente/quic-go/internal/handshake"
|
|
|
|
// WindowUpdate provides the data for WindowUpdateFrames.
|
|
type WindowUpdate struct {
|
|
StreamID protocol.StreamID
|
|
Offset protocol.ByteCount
|
|
}
|
|
|
|
// A FlowControlManager manages the flow control
|
|
type FlowControlManager interface {
|
|
NewStream(streamID protocol.StreamID, contributesToConnectionFlow bool)
|
|
RemoveStream(streamID protocol.StreamID)
|
|
UpdateTransportParameters(*handshake.TransportParameters)
|
|
// methods needed for receiving data
|
|
ResetStream(streamID protocol.StreamID, byteOffset protocol.ByteCount) error
|
|
UpdateHighestReceived(streamID protocol.StreamID, byteOffset protocol.ByteCount) error
|
|
AddBytesRead(streamID protocol.StreamID, n protocol.ByteCount) error
|
|
GetWindowUpdates() []WindowUpdate
|
|
GetReceiveWindow(streamID protocol.StreamID) (protocol.ByteCount, error)
|
|
// methods needed for sending data
|
|
AddBytesSent(streamID protocol.StreamID, n protocol.ByteCount) error
|
|
SendWindowSize(streamID protocol.StreamID) (protocol.ByteCount, error)
|
|
RemainingConnectionWindowSize() protocol.ByteCount
|
|
UpdateStreamWindow(streamID protocol.StreamID, offset protocol.ByteCount) (bool, error)
|
|
UpdateConnectionWindow(offset protocol.ByteCount) bool
|
|
}
|