forked from quic-go/quic-go
@@ -50,7 +50,7 @@ type Session struct {
|
|||||||
sentPacketHandler ackhandler.SentPacketHandler
|
sentPacketHandler ackhandler.SentPacketHandler
|
||||||
receivedPacketHandler ackhandler.ReceivedPacketHandler
|
receivedPacketHandler ackhandler.ReceivedPacketHandler
|
||||||
stopWaitingManager ackhandler.StopWaitingManager
|
stopWaitingManager ackhandler.StopWaitingManager
|
||||||
windowUpdateManager *WindowUpdateManager
|
windowUpdateManager *windowUpdateManager
|
||||||
|
|
||||||
unpacker *packetUnpacker
|
unpacker *packetUnpacker
|
||||||
packer *packetPacker
|
packer *packetPacker
|
||||||
@@ -87,7 +87,7 @@ func NewSession(conn connection, v protocol.VersionNumber, connectionID protocol
|
|||||||
sentPacketHandler: ackhandler.NewSentPacketHandler(stopWaitingManager),
|
sentPacketHandler: ackhandler.NewSentPacketHandler(stopWaitingManager),
|
||||||
receivedPacketHandler: ackhandler.NewReceivedPacketHandler(),
|
receivedPacketHandler: ackhandler.NewReceivedPacketHandler(),
|
||||||
stopWaitingManager: stopWaitingManager,
|
stopWaitingManager: stopWaitingManager,
|
||||||
windowUpdateManager: NewWindowUpdateManager(),
|
windowUpdateManager: newWindowUpdateManager(),
|
||||||
receivedPackets: make(chan receivedPacket, 1000), // TODO: What if server receives many packets and connection is already closed?!
|
receivedPackets: make(chan receivedPacket, 1000), // TODO: What if server receives many packets and connection is already closed?!
|
||||||
closeChan: make(chan struct{}, 1),
|
closeChan: make(chan struct{}, 1),
|
||||||
sendingScheduled: make(chan struct{}, 1),
|
sendingScheduled: make(chan struct{}, 1),
|
||||||
|
|||||||
@@ -12,21 +12,21 @@ type windowUpdateItem struct {
|
|||||||
Counter uint8
|
Counter uint8
|
||||||
}
|
}
|
||||||
|
|
||||||
// WindowUpdateManager manages window update frames for receiving data
|
// windowUpdateManager manages window update frames for receiving data
|
||||||
type WindowUpdateManager struct {
|
type windowUpdateManager struct {
|
||||||
streamOffsets map[protocol.StreamID]*windowUpdateItem
|
streamOffsets map[protocol.StreamID]*windowUpdateItem
|
||||||
mutex sync.RWMutex
|
mutex sync.RWMutex
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewWindowUpdateManager returns a new WindowUpdateManager
|
// newWindowUpdateManager returns a new windowUpdateManager
|
||||||
func NewWindowUpdateManager() *WindowUpdateManager {
|
func newWindowUpdateManager() *windowUpdateManager {
|
||||||
return &WindowUpdateManager{
|
return &windowUpdateManager{
|
||||||
streamOffsets: make(map[protocol.StreamID]*windowUpdateItem),
|
streamOffsets: make(map[protocol.StreamID]*windowUpdateItem),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetStreamOffset sets an offset for a stream
|
// SetStreamOffset sets an offset for a stream
|
||||||
func (m *WindowUpdateManager) SetStreamOffset(streamID protocol.StreamID, n protocol.ByteCount) {
|
func (m *windowUpdateManager) SetStreamOffset(streamID protocol.StreamID, n protocol.ByteCount) {
|
||||||
m.mutex.Lock()
|
m.mutex.Lock()
|
||||||
defer m.mutex.Unlock()
|
defer m.mutex.Unlock()
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@ func (m *WindowUpdateManager) SetStreamOffset(streamID protocol.StreamID, n prot
|
|||||||
}
|
}
|
||||||
|
|
||||||
// GetWindowUpdateFrames gets all the WindowUpdate frames that need to be sent
|
// GetWindowUpdateFrames gets all the WindowUpdate frames that need to be sent
|
||||||
func (m *WindowUpdateManager) GetWindowUpdateFrames() []*frames.WindowUpdateFrame {
|
func (m *windowUpdateManager) GetWindowUpdateFrames() []*frames.WindowUpdateFrame {
|
||||||
m.mutex.RLock()
|
m.mutex.RLock()
|
||||||
defer m.mutex.RUnlock()
|
defer m.mutex.RUnlock()
|
||||||
|
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var _ = Describe("WindowUpdateManager", func() {
|
var _ = Describe("WindowUpdateManager", func() {
|
||||||
var wum *WindowUpdateManager
|
var wum *windowUpdateManager
|
||||||
|
|
||||||
BeforeEach(func() {
|
BeforeEach(func() {
|
||||||
wum = NewWindowUpdateManager()
|
wum = newWindowUpdateManager()
|
||||||
})
|
})
|
||||||
|
|
||||||
Context("queueing new window updates", func() {
|
Context("queueing new window updates", func() {
|
||||||
|
|||||||
Reference in New Issue
Block a user