forked from quic-go/quic-go
initialize StreamFrameQueue in Session, not in PacketPacker
This commit is contained in:
@@ -34,7 +34,7 @@ type packetPacker struct {
|
||||
lastPacketNumber protocol.PacketNumber
|
||||
}
|
||||
|
||||
func newPacketPacker(connectionID protocol.ConnectionID, cryptoSetup *handshake.CryptoSetup, sentPacketHandler ackhandler.SentPacketHandler, connectionParametersHandler *handshake.ConnectionParametersManager, blockedManager *blockedManager, version protocol.VersionNumber) *packetPacker {
|
||||
func newPacketPacker(connectionID protocol.ConnectionID, cryptoSetup *handshake.CryptoSetup, sentPacketHandler ackhandler.SentPacketHandler, connectionParametersHandler *handshake.ConnectionParametersManager, blockedManager *blockedManager, streamFrameQueue *streamFrameQueue, version protocol.VersionNumber) *packetPacker {
|
||||
return &packetPacker{
|
||||
cryptoSetup: cryptoSetup,
|
||||
connectionID: connectionID,
|
||||
@@ -42,7 +42,7 @@ func newPacketPacker(connectionID protocol.ConnectionID, cryptoSetup *handshake.
|
||||
version: version,
|
||||
sentPacketHandler: sentPacketHandler,
|
||||
blockedManager: blockedManager,
|
||||
streamFrameQueue: newStreamFrameQueue(),
|
||||
streamFrameQueue: streamFrameQueue,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -245,12 +245,3 @@ func (p *packetPacker) composeNextPacket(stopWaitingFrame *frames.StopWaitingFra
|
||||
|
||||
return payloadFrames, nil
|
||||
}
|
||||
|
||||
// Empty returns true if no frames are queued
|
||||
func (p *packetPacker) Empty() bool {
|
||||
return p.streamFrameQueue.ByteLen() == 0
|
||||
}
|
||||
|
||||
func (p *packetPacker) StreamFrameQueueByteLen() protocol.ByteCount {
|
||||
return p.streamFrameQueue.ByteLen()
|
||||
}
|
||||
|
||||
@@ -454,14 +454,4 @@ var _ = Describe("Packet packer", func() {
|
||||
Expect(p[0]).To(Equal(&frames.BlockedFrame{StreamID: 0}))
|
||||
})
|
||||
})
|
||||
|
||||
It("says whether it is empty", func() {
|
||||
Expect(packer.Empty()).To(BeTrue())
|
||||
f := frames.StreamFrame{
|
||||
StreamID: 5,
|
||||
Data: []byte{0xDE, 0xCA, 0xFB, 0xAD},
|
||||
}
|
||||
packer.AddStreamFrame(f)
|
||||
Expect(packer.Empty()).To(BeFalse())
|
||||
})
|
||||
})
|
||||
|
||||
@@ -53,6 +53,7 @@ type Session struct {
|
||||
stopWaitingManager ackhandler.StopWaitingManager
|
||||
windowUpdateManager *windowUpdateManager
|
||||
blockedManager *blockedManager
|
||||
streamFrameQueue *streamFrameQueue
|
||||
|
||||
flowController flowcontrol.FlowController // connection level flow controller
|
||||
|
||||
@@ -101,6 +102,7 @@ func newSession(conn connection, v protocol.VersionNumber, connectionID protocol
|
||||
flowController: flowcontrol.NewFlowController(0, connectionParametersManager),
|
||||
windowUpdateManager: newWindowUpdateManager(),
|
||||
blockedManager: newBlockedManager(),
|
||||
streamFrameQueue: newStreamFrameQueue(),
|
||||
receivedPackets: make(chan receivedPacket, protocol.MaxSessionUnprocessedPackets),
|
||||
closeChan: make(chan struct{}, 1),
|
||||
sendingScheduled: make(chan struct{}, 1),
|
||||
@@ -118,7 +120,7 @@ func newSession(conn connection, v protocol.VersionNumber, connectionID protocol
|
||||
return nil, err
|
||||
}
|
||||
|
||||
session.packer = newPacketPacker(connectionID, session.cryptoSetup, session.sentPacketHandler, session.connectionParametersManager, session.blockedManager, v)
|
||||
session.packer = newPacketPacker(connectionID, session.cryptoSetup, session.sentPacketHandler, session.connectionParametersManager, session.blockedManager, session.streamFrameQueue, v)
|
||||
session.unpacker = &packetUnpacker{aead: session.cryptoSetup, version: v}
|
||||
|
||||
return session, err
|
||||
@@ -451,7 +453,7 @@ func (s *Session) maybeSendPacket() error {
|
||||
}
|
||||
|
||||
// note that maxPacketSize can get (much) larger than protocol.MaxPacketSize if there is a long queue of StreamFrames
|
||||
maxPacketSize += s.packer.StreamFrameQueueByteLen()
|
||||
maxPacketSize += s.streamFrameQueue.ByteLen()
|
||||
|
||||
if maxPacketSize > protocol.SmallPacketPayloadSizeThreshold {
|
||||
return s.sendPacket()
|
||||
@@ -540,7 +542,7 @@ func (s *Session) sendPacket() error {
|
||||
return err
|
||||
}
|
||||
|
||||
if !s.packer.Empty() {
|
||||
if s.streamFrameQueue.Len() > 0 {
|
||||
s.scheduleSending()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user