diff --git a/packet_packer.go b/packet_packer.go index cd0df09e..441981e2 100644 --- a/packet_packer.go +++ b/packet_packer.go @@ -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() -} diff --git a/packet_packer_test.go b/packet_packer_test.go index 44104fa6..05675371 100644 --- a/packet_packer_test.go +++ b/packet_packer_test.go @@ -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()) - }) }) diff --git a/session.go b/session.go index 86a417bd..53ca3d48 100644 --- a/session.go +++ b/session.go @@ -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() }