forked from quic-go/quic-go
rename AckFrame to AckFrameLegacy
This commit is contained in:
@@ -10,7 +10,7 @@ import (
|
||||
// SentPacketHandler handles ACKs received for outgoing packets
|
||||
type SentPacketHandler interface {
|
||||
SentPacket(packet *Packet) error
|
||||
ReceivedAck(ackFrame *frames.AckFrame) error
|
||||
ReceivedAck(ackFrame *frames.AckFrameLegacy) error
|
||||
|
||||
ProbablyHasPacketForRetransmission() bool
|
||||
DequeuePacketForRetransmission() (packet *Packet)
|
||||
@@ -29,7 +29,7 @@ type ReceivedPacketHandler interface {
|
||||
ReceivedPacket(packetNumber protocol.PacketNumber, entropyBit bool) error
|
||||
ReceivedStopWaiting(*frames.StopWaitingFrame) error
|
||||
|
||||
GetAckFrame(dequeue bool) (*frames.AckFrame, error)
|
||||
GetAckFrame(dequeue bool) (*frames.AckFrameLegacy, error)
|
||||
}
|
||||
|
||||
// StopWaitingManager manages StopWaitings for sent packets
|
||||
|
||||
@@ -41,7 +41,7 @@ func (p *Packet) GetControlFramesForRetransmission() []frames.Frame {
|
||||
continue
|
||||
}
|
||||
|
||||
_, isAck := frame.(*frames.AckFrame)
|
||||
_, isAck := frame.(*frames.AckFrameLegacy)
|
||||
_, isStopWaiting := frame.(*frames.StopWaitingFrame)
|
||||
if !isAck && !isStopWaiting {
|
||||
controlFrames = append(controlFrames, frame)
|
||||
|
||||
@@ -10,7 +10,7 @@ var _ = Describe("Packet", func() {
|
||||
Context("getFramesForRetransmission", func() {
|
||||
var packet Packet
|
||||
var streamFrame1, streamFrame2 *frames.StreamFrame
|
||||
var ackFrame1, ackFrame2 *frames.AckFrame
|
||||
var ackFrame1, ackFrame2 *frames.AckFrameLegacy
|
||||
var stopWaitingFrame *frames.StopWaitingFrame
|
||||
var rstStreamFrame *frames.RstStreamFrame
|
||||
var windowUpdateFrame *frames.WindowUpdateFrame
|
||||
@@ -24,11 +24,11 @@ var _ = Describe("Packet", func() {
|
||||
StreamID: 6,
|
||||
Data: []byte{0xDE, 0xCA, 0xFB, 0xAD},
|
||||
}
|
||||
ackFrame1 = &frames.AckFrame{
|
||||
ackFrame1 = &frames.AckFrameLegacy{
|
||||
LargestObserved: 13,
|
||||
Entropy: 5,
|
||||
}
|
||||
ackFrame2 = &frames.AckFrame{
|
||||
ackFrame2 = &frames.AckFrameLegacy{
|
||||
LargestObserved: 333,
|
||||
Entropy: 17,
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ type receivedPacketHandler struct {
|
||||
highestInOrderObserved protocol.PacketNumber
|
||||
highestInOrderObservedEntropy EntropyAccumulator
|
||||
largestObserved protocol.PacketNumber
|
||||
currentAckFrame *frames.AckFrame
|
||||
currentAckFrame *frames.AckFrameLegacy
|
||||
stateChanged bool // has an ACK for this state already been sent? Will be set to false every time a new packet arrives, and to false every time an ACK is sent
|
||||
|
||||
packetHistory map[protocol.PacketNumber]packetHistoryEntry
|
||||
@@ -117,7 +117,7 @@ func (h *receivedPacketHandler) getNackRanges() ([]frames.NackRange, EntropyAccu
|
||||
return ranges, entropy
|
||||
}
|
||||
|
||||
func (h *receivedPacketHandler) GetAckFrame(dequeue bool) (*frames.AckFrame, error) {
|
||||
func (h *receivedPacketHandler) GetAckFrame(dequeue bool) (*frames.AckFrameLegacy, error) {
|
||||
if !h.stateChanged {
|
||||
return nil, nil
|
||||
}
|
||||
@@ -137,7 +137,7 @@ func (h *receivedPacketHandler) GetAckFrame(dequeue bool) (*frames.AckFrame, err
|
||||
packetReceivedTime := p.TimeReceived
|
||||
|
||||
nackRanges, entropy := h.getNackRanges()
|
||||
h.currentAckFrame = &frames.AckFrame{
|
||||
h.currentAckFrame = &frames.AckFrameLegacy{
|
||||
LargestObserved: h.largestObserved,
|
||||
Entropy: byte(entropy),
|
||||
NackRanges: nackRanges,
|
||||
|
||||
@@ -142,7 +142,7 @@ func (h *sentPacketHandler) SentPacket(packet *Packet) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h *sentPacketHandler) calculateExpectedEntropy(ackFrame *frames.AckFrame) (EntropyAccumulator, error) {
|
||||
func (h *sentPacketHandler) calculateExpectedEntropy(ackFrame *frames.AckFrameLegacy) (EntropyAccumulator, error) {
|
||||
packet, ok := h.packetHistory[ackFrame.LargestObserved]
|
||||
if !ok {
|
||||
return 0, ErrMapAccess
|
||||
@@ -172,7 +172,7 @@ func (h *sentPacketHandler) calculateExpectedEntropy(ackFrame *frames.AckFrame)
|
||||
}
|
||||
|
||||
// TODO: Simplify return types
|
||||
func (h *sentPacketHandler) ReceivedAck(ackFrame *frames.AckFrame) error {
|
||||
func (h *sentPacketHandler) ReceivedAck(ackFrame *frames.AckFrameLegacy) error {
|
||||
if ackFrame.LargestObserved > h.lastSentPacketNumber {
|
||||
return errAckForUnsentPacket
|
||||
}
|
||||
|
||||
@@ -138,7 +138,7 @@ var _ = Describe("SentPacketHandler", func() {
|
||||
Expect(handler.BytesInFlight()).To(Equal(protocol.ByteCount(1)))
|
||||
entropy := EntropyAccumulator(0)
|
||||
entropy.Add(packet1.PacketNumber, packet1.EntropyBit)
|
||||
ack := frames.AckFrame{
|
||||
ack := frames.AckFrameLegacy{
|
||||
LargestObserved: 1,
|
||||
Entropy: byte(entropy),
|
||||
}
|
||||
@@ -207,7 +207,7 @@ var _ = Describe("SentPacketHandler", func() {
|
||||
for i := 0; i < largestObserved; i++ {
|
||||
entropy.Add(packets[i].PacketNumber, packets[i].EntropyBit)
|
||||
}
|
||||
ack := frames.AckFrame{LargestObserved: protocol.PacketNumber(largestObserved)}
|
||||
ack := frames.AckFrameLegacy{LargestObserved: protocol.PacketNumber(largestObserved)}
|
||||
calculatedEntropy, err := handler.calculateExpectedEntropy(&ack)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(calculatedEntropy).To(Equal(entropy))
|
||||
@@ -221,7 +221,7 @@ var _ = Describe("SentPacketHandler", func() {
|
||||
}
|
||||
entropy.Add(packets[i].PacketNumber, packets[i].EntropyBit)
|
||||
}
|
||||
ack := frames.AckFrame{
|
||||
ack := frames.AckFrameLegacy{
|
||||
LargestObserved: protocol.PacketNumber(largestObserved),
|
||||
NackRanges: []frames.NackRange{{FirstPacketNumber: 3, LastPacketNumber: 4}},
|
||||
}
|
||||
@@ -241,7 +241,7 @@ var _ = Describe("SentPacketHandler", func() {
|
||||
handler.ackPacket(1)
|
||||
handler.ackPacket(2)
|
||||
handler.ackPacket(5)
|
||||
ack := frames.AckFrame{
|
||||
ack := frames.AckFrameLegacy{
|
||||
LargestObserved: protocol.PacketNumber(largestObserved),
|
||||
NackRanges: []frames.NackRange{{FirstPacketNumber: 3, LastPacketNumber: 4}},
|
||||
}
|
||||
@@ -258,7 +258,7 @@ var _ = Describe("SentPacketHandler", func() {
|
||||
}
|
||||
entropy.Add(packets[i].PacketNumber, packets[i].EntropyBit)
|
||||
}
|
||||
ack := frames.AckFrame{
|
||||
ack := frames.AckFrameLegacy{
|
||||
LargestObserved: protocol.PacketNumber(largestObserved),
|
||||
NackRanges: []frames.NackRange{
|
||||
{FirstPacketNumber: 4, LastPacketNumber: 4},
|
||||
@@ -271,7 +271,7 @@ var _ = Describe("SentPacketHandler", func() {
|
||||
})
|
||||
|
||||
It("actually rejects an ACK with the wrong entropy", func() {
|
||||
ack := frames.AckFrame{
|
||||
ack := frames.AckFrameLegacy{
|
||||
LargestObserved: 4,
|
||||
Entropy: 1,
|
||||
}
|
||||
@@ -286,7 +286,7 @@ var _ = Describe("SentPacketHandler", func() {
|
||||
for i := 0; i < largestObserved; i++ {
|
||||
entropy.Add(packets[i].PacketNumber, packets[i].EntropyBit)
|
||||
}
|
||||
ack := frames.AckFrame{
|
||||
ack := frames.AckFrameLegacy{
|
||||
LargestObserved: protocol.PacketNumber(largestObserved),
|
||||
Entropy: byte(entropy),
|
||||
}
|
||||
@@ -308,7 +308,7 @@ var _ = Describe("SentPacketHandler", func() {
|
||||
}
|
||||
entropy.Add(packets[i].PacketNumber, packets[i].EntropyBit)
|
||||
}
|
||||
ack := frames.AckFrame{
|
||||
ack := frames.AckFrameLegacy{
|
||||
LargestObserved: protocol.PacketNumber(largestObserved),
|
||||
Entropy: byte(entropy),
|
||||
NackRanges: []frames.NackRange{
|
||||
@@ -350,7 +350,7 @@ var _ = Describe("SentPacketHandler", func() {
|
||||
Context("ACK validation", func() {
|
||||
It("rejects duplicate ACKs", func() {
|
||||
largestObserved := 3
|
||||
ack := frames.AckFrame{
|
||||
ack := frames.AckFrameLegacy{
|
||||
LargestObserved: protocol.PacketNumber(largestObserved),
|
||||
}
|
||||
err := handler.ReceivedAck(&ack)
|
||||
@@ -363,7 +363,7 @@ var _ = Describe("SentPacketHandler", func() {
|
||||
|
||||
It("rejects out of order ACKs", func() {
|
||||
largestObserved := 3
|
||||
ack := frames.AckFrame{
|
||||
ack := frames.AckFrameLegacy{
|
||||
LargestObserved: protocol.PacketNumber(largestObserved),
|
||||
}
|
||||
err := handler.ReceivedAck(&ack)
|
||||
@@ -377,7 +377,7 @@ var _ = Describe("SentPacketHandler", func() {
|
||||
})
|
||||
|
||||
It("rejects ACKs with a too high LargestObserved packet number", func() {
|
||||
ack := frames.AckFrame{
|
||||
ack := frames.AckFrameLegacy{
|
||||
LargestObserved: packets[len(packets)-1].PacketNumber + 1337,
|
||||
}
|
||||
err := handler.ReceivedAck(&ack)
|
||||
@@ -395,13 +395,13 @@ var _ = Describe("SentPacketHandler", func() {
|
||||
handler.packetHistory[2].sendTime = now.Add(-5 * time.Minute)
|
||||
handler.packetHistory[6].sendTime = now.Add(-1 * time.Minute)
|
||||
// Now, check that the proper times are used when calculating the deltas
|
||||
err := handler.ReceivedAck(&frames.AckFrame{LargestObserved: 1})
|
||||
err := handler.ReceivedAck(&frames.AckFrameLegacy{LargestObserved: 1})
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(handler.rttStats.LatestRTT()).To(BeNumerically("~", 10*time.Minute, 1*time.Second))
|
||||
err = handler.ReceivedAck(&frames.AckFrame{LargestObserved: 2})
|
||||
err = handler.ReceivedAck(&frames.AckFrameLegacy{LargestObserved: 2})
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(handler.rttStats.LatestRTT()).To(BeNumerically("~", 5*time.Minute, 1*time.Second))
|
||||
err = handler.ReceivedAck(&frames.AckFrame{LargestObserved: 6})
|
||||
err = handler.ReceivedAck(&frames.AckFrameLegacy{LargestObserved: 6})
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(handler.rttStats.LatestRTT()).To(BeNumerically("~", 1*time.Minute, 1*time.Second))
|
||||
})
|
||||
@@ -409,7 +409,7 @@ var _ = Describe("SentPacketHandler", func() {
|
||||
It("uses the DelayTime in the ack frame", func() {
|
||||
now := time.Now()
|
||||
handler.packetHistory[1].sendTime = now.Add(-10 * time.Minute)
|
||||
err := handler.ReceivedAck(&frames.AckFrame{LargestObserved: 1, DelayTime: 5 * time.Minute})
|
||||
err := handler.ReceivedAck(&frames.AckFrameLegacy{LargestObserved: 1, DelayTime: 5 * time.Minute})
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(handler.rttStats.LatestRTT()).To(BeNumerically("~", 5*time.Minute, 1*time.Second))
|
||||
})
|
||||
@@ -497,7 +497,7 @@ var _ = Describe("SentPacketHandler", func() {
|
||||
})
|
||||
|
||||
It("does not change the highestInOrderAckedPacketNumber after queueing a retransmission", func() {
|
||||
ack := frames.AckFrame{
|
||||
ack := frames.AckFrameLegacy{
|
||||
LargestObserved: 4,
|
||||
NackRanges: []frames.NackRange{{FirstPacketNumber: 3, LastPacketNumber: 3}},
|
||||
}
|
||||
@@ -533,7 +533,7 @@ var _ = Describe("SentPacketHandler", func() {
|
||||
Expect(handler.BytesInFlight()).To(Equal(protocol.ByteCount(3)))
|
||||
|
||||
// ACK 2, NACK 1
|
||||
ack := frames.AckFrame{
|
||||
ack := frames.AckFrameLegacy{
|
||||
LargestObserved: 2,
|
||||
NackRanges: []frames.NackRange{{FirstPacketNumber: 1, LastPacketNumber: 1}},
|
||||
}
|
||||
@@ -555,7 +555,7 @@ var _ = Describe("SentPacketHandler", func() {
|
||||
Expect(handler.BytesInFlight()).To(Equal(protocol.ByteCount(1)))
|
||||
|
||||
// ACK
|
||||
ack = frames.AckFrame{
|
||||
ack = frames.AckFrameLegacy{
|
||||
LargestObserved: 3,
|
||||
}
|
||||
err = handler.ReceivedAck(&ack)
|
||||
@@ -593,7 +593,7 @@ var _ = Describe("SentPacketHandler", func() {
|
||||
handler.SentPacket(&Packet{PacketNumber: 1, Frames: []frames.Frame{}, Length: 1})
|
||||
handler.SentPacket(&Packet{PacketNumber: 2, Frames: []frames.Frame{}, Length: 2})
|
||||
handler.SentPacket(&Packet{PacketNumber: 3, Frames: []frames.Frame{}, Length: 3})
|
||||
err := handler.ReceivedAck(&frames.AckFrame{
|
||||
err := handler.ReceivedAck(&frames.AckFrameLegacy{
|
||||
LargestObserved: 3,
|
||||
NackRanges: []frames.NackRange{{2, 2}},
|
||||
})
|
||||
@@ -610,7 +610,7 @@ var _ = Describe("SentPacketHandler", func() {
|
||||
for i := uint8(0); i < protocol.RetransmissionThreshold; i++ {
|
||||
packetNumber = protocol.PacketNumber(4 + i)
|
||||
handler.SentPacket(&Packet{PacketNumber: packetNumber, Frames: []frames.Frame{}, Length: protocol.ByteCount(packetNumber)})
|
||||
err = handler.ReceivedAck(&frames.AckFrame{
|
||||
err = handler.ReceivedAck(&frames.AckFrameLegacy{
|
||||
LargestObserved: packetNumber,
|
||||
NackRanges: []frames.NackRange{{2, 2}},
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user