change composeNextPacket function signature in packetPacker

This commit is contained in:
Marten Seemann
2017-01-11 12:01:41 +07:00
parent 599926e3cb
commit d4b2b66273
2 changed files with 20 additions and 19 deletions

View File

@@ -104,7 +104,8 @@ func (p *packetPacker) packPacket(stopWaitingFrame *frames.StopWaitingFrame, lea
if isConnectionClose { if isConnectionClose {
payloadFrames = []frames.Frame{p.controlFrames[0]} payloadFrames = []frames.Frame{p.controlFrames[0]}
} else { } else {
payloadFrames, err = p.composeNextPacket(stopWaitingFrame, publicHeaderLength) maxSize := protocol.MaxFrameAndPublicHeaderSize - publicHeaderLength
payloadFrames, err = p.composeNextPacket(stopWaitingFrame, maxSize)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -164,12 +165,10 @@ func (p *packetPacker) packPacket(stopWaitingFrame *frames.StopWaitingFrame, lea
}, nil }, nil
} }
func (p *packetPacker) composeNextPacket(stopWaitingFrame *frames.StopWaitingFrame, publicHeaderLength protocol.ByteCount) ([]frames.Frame, error) { func (p *packetPacker) composeNextPacket(stopWaitingFrame *frames.StopWaitingFrame, maxFrameSize protocol.ByteCount) ([]frames.Frame, error) {
var payloadLength protocol.ByteCount var payloadLength protocol.ByteCount
var payloadFrames []frames.Frame var payloadFrames []frames.Frame
maxFrameSize := protocol.MaxFrameAndPublicHeaderSize - publicHeaderLength
if stopWaitingFrame != nil { if stopWaitingFrame != nil {
payloadFrames = append(payloadFrames, stopWaitingFrame) payloadFrames = append(payloadFrames, stopWaitingFrame)
minLength, err := stopWaitingFrame.MinLength(p.version) minLength, err := stopWaitingFrame.MinLength(p.version)

View File

@@ -37,6 +37,7 @@ var _ = Describe("Packet packer", func() {
var ( var (
packer *packetPacker packer *packetPacker
publicHeaderLen protocol.ByteCount publicHeaderLen protocol.ByteCount
maxFrameSize protocol.ByteCount
streamFramer *streamFramer streamFramer *streamFramer
) )
@@ -57,6 +58,7 @@ var _ = Describe("Packet packer", func() {
perspective: protocol.PerspectiveServer, perspective: protocol.PerspectiveServer,
} }
publicHeaderLen = 1 + 8 + 2 // 1 flag byte, 8 connection ID, 2 packet number publicHeaderLen = 1 + 8 + 2 // 1 flag byte, 8 connection ID, 2 packet number
maxFrameSize = protocol.MaxFrameAndPublicHeaderSize - publicHeaderLen
packer.version = protocol.Version34 packer.version = protocol.Version34
}) })
@@ -222,10 +224,10 @@ var _ = Describe("Packet packer", func() {
controlFrames = append(controlFrames, f) controlFrames = append(controlFrames, f)
} }
packer.controlFrames = controlFrames packer.controlFrames = controlFrames
payloadFrames, err := packer.composeNextPacket(nil, publicHeaderLen) payloadFrames, err := packer.composeNextPacket(nil, maxFrameSize)
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())
Expect(payloadFrames).To(HaveLen(maxFramesPerPacket)) Expect(payloadFrames).To(HaveLen(maxFramesPerPacket))
payloadFrames, err = packer.composeNextPacket(nil, publicHeaderLen) payloadFrames, err = packer.composeNextPacket(nil, maxFrameSize)
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())
Expect(payloadFrames).To(BeEmpty()) Expect(payloadFrames).To(BeEmpty())
}) })
@@ -241,10 +243,10 @@ var _ = Describe("Packet packer", func() {
controlFrames = append(controlFrames, blockedFrame) controlFrames = append(controlFrames, blockedFrame)
} }
packer.controlFrames = controlFrames packer.controlFrames = controlFrames
payloadFrames, err := packer.composeNextPacket(nil, publicHeaderLen) payloadFrames, err := packer.composeNextPacket(nil, maxFrameSize)
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())
Expect(payloadFrames).To(HaveLen(maxFramesPerPacket)) Expect(payloadFrames).To(HaveLen(maxFramesPerPacket))
payloadFrames, err = packer.composeNextPacket(nil, publicHeaderLen) payloadFrames, err = packer.composeNextPacket(nil, maxFrameSize)
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())
Expect(payloadFrames).To(HaveLen(10)) Expect(payloadFrames).To(HaveLen(10))
}) })
@@ -275,14 +277,14 @@ var _ = Describe("Packet packer", func() {
DataLenPresent: false, DataLenPresent: false,
} }
minLength, _ := f.MinLength(0) minLength, _ := f.MinLength(0)
maxStreamFrameDataLen := protocol.MaxFrameAndPublicHeaderSize - publicHeaderLen - minLength maxStreamFrameDataLen := maxFrameSize - minLength
f.Data = bytes.Repeat([]byte{'f'}, int(maxStreamFrameDataLen)) f.Data = bytes.Repeat([]byte{'f'}, int(maxStreamFrameDataLen))
streamFramer.AddFrameForRetransmission(f) streamFramer.AddFrameForRetransmission(f)
payloadFrames, err := packer.composeNextPacket(nil, publicHeaderLen) payloadFrames, err := packer.composeNextPacket(nil, maxFrameSize)
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())
Expect(payloadFrames).To(HaveLen(1)) Expect(payloadFrames).To(HaveLen(1))
Expect(payloadFrames[0].(*frames.StreamFrame).DataLenPresent).To(BeFalse()) Expect(payloadFrames[0].(*frames.StreamFrame).DataLenPresent).To(BeFalse())
payloadFrames, err = packer.composeNextPacket(nil, publicHeaderLen) payloadFrames, err = packer.composeNextPacket(nil, maxFrameSize)
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())
Expect(payloadFrames).To(BeEmpty()) Expect(payloadFrames).To(BeEmpty())
}) })
@@ -353,17 +355,17 @@ var _ = Describe("Packet packer", func() {
maxStreamFrameDataLen := protocol.MaxFrameAndPublicHeaderSize - publicHeaderLen - minLength maxStreamFrameDataLen := protocol.MaxFrameAndPublicHeaderSize - publicHeaderLen - minLength
f.Data = bytes.Repeat([]byte{'f'}, int(maxStreamFrameDataLen)+200) f.Data = bytes.Repeat([]byte{'f'}, int(maxStreamFrameDataLen)+200)
streamFramer.AddFrameForRetransmission(f) streamFramer.AddFrameForRetransmission(f)
payloadFrames, err := packer.composeNextPacket(nil, publicHeaderLen) payloadFrames, err := packer.composeNextPacket(nil, maxFrameSize)
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())
Expect(payloadFrames).To(HaveLen(1)) Expect(payloadFrames).To(HaveLen(1))
Expect(payloadFrames[0].(*frames.StreamFrame).DataLenPresent).To(BeFalse()) Expect(payloadFrames[0].(*frames.StreamFrame).DataLenPresent).To(BeFalse())
Expect(payloadFrames[0].(*frames.StreamFrame).Data).To(HaveLen(int(maxStreamFrameDataLen))) Expect(payloadFrames[0].(*frames.StreamFrame).Data).To(HaveLen(int(maxStreamFrameDataLen)))
payloadFrames, err = packer.composeNextPacket(nil, publicHeaderLen) payloadFrames, err = packer.composeNextPacket(nil, maxFrameSize)
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())
Expect(payloadFrames).To(HaveLen(1)) Expect(payloadFrames).To(HaveLen(1))
Expect(payloadFrames[0].(*frames.StreamFrame).Data).To(HaveLen(200)) Expect(payloadFrames[0].(*frames.StreamFrame).Data).To(HaveLen(200))
Expect(payloadFrames[0].(*frames.StreamFrame).DataLenPresent).To(BeFalse()) Expect(payloadFrames[0].(*frames.StreamFrame).DataLenPresent).To(BeFalse())
payloadFrames, err = packer.composeNextPacket(nil, publicHeaderLen) payloadFrames, err = packer.composeNextPacket(nil, maxFrameSize)
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())
Expect(payloadFrames).To(BeEmpty()) Expect(payloadFrames).To(BeEmpty())
}) })
@@ -426,10 +428,10 @@ var _ = Describe("Packet packer", func() {
f.Data = bytes.Repeat([]byte{'f'}, int(protocol.MaxFrameAndPublicHeaderSize-publicHeaderLen-minLength+2)) // + 2 since MinceLength is 1 bigger than the actual StreamFrame header f.Data = bytes.Repeat([]byte{'f'}, int(protocol.MaxFrameAndPublicHeaderSize-publicHeaderLen-minLength+2)) // + 2 since MinceLength is 1 bigger than the actual StreamFrame header
streamFramer.AddFrameForRetransmission(f) streamFramer.AddFrameForRetransmission(f)
payloadFrames, err := packer.composeNextPacket(nil, publicHeaderLen) payloadFrames, err := packer.composeNextPacket(nil, maxFrameSize)
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())
Expect(payloadFrames).To(HaveLen(1)) Expect(payloadFrames).To(HaveLen(1))
payloadFrames, err = packer.composeNextPacket(nil, publicHeaderLen) payloadFrames, err = packer.composeNextPacket(nil, maxFrameSize)
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())
Expect(payloadFrames).To(HaveLen(1)) Expect(payloadFrames).To(HaveLen(1))
}) })
@@ -494,7 +496,7 @@ var _ = Describe("Packet packer", func() {
Data: bytes.Repeat([]byte{'f'}, length), Data: bytes.Repeat([]byte{'f'}, length),
} }
streamFramer.AddFrameForRetransmission(f) streamFramer.AddFrameForRetransmission(f)
_, err := packer.composeNextPacket(nil, publicHeaderLen) _, err := packer.composeNextPacket(nil, maxFrameSize)
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())
Expect(packer.controlFrames[0]).To(Equal(&frames.BlockedFrame{StreamID: 5})) Expect(packer.controlFrames[0]).To(Equal(&frames.BlockedFrame{StreamID: 5}))
}) })
@@ -507,7 +509,7 @@ var _ = Describe("Packet packer", func() {
Data: bytes.Repeat([]byte{'f'}, length), Data: bytes.Repeat([]byte{'f'}, length),
} }
streamFramer.AddFrameForRetransmission(f) streamFramer.AddFrameForRetransmission(f)
p, err := packer.composeNextPacket(nil, publicHeaderLen) p, err := packer.composeNextPacket(nil, maxFrameSize)
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())
Expect(p).To(HaveLen(1)) Expect(p).To(HaveLen(1))
Expect(p[0].(*frames.StreamFrame).DataLenPresent).To(BeFalse()) Expect(p[0].(*frames.StreamFrame).DataLenPresent).To(BeFalse())
@@ -520,7 +522,7 @@ var _ = Describe("Packet packer", func() {
Data: []byte("foobar"), Data: []byte("foobar"),
} }
streamFramer.AddFrameForRetransmission(f) streamFramer.AddFrameForRetransmission(f)
_, err := packer.composeNextPacket(nil, publicHeaderLen) _, err := packer.composeNextPacket(nil, maxFrameSize)
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())
Expect(packer.controlFrames[0]).To(Equal(&frames.BlockedFrame{StreamID: 0})) Expect(packer.controlFrames[0]).To(Equal(&frames.BlockedFrame{StreamID: 0}))
}) })