optimize FirstOutstanding in the sent packet history (#3467)

* optimize FirstOutstanding

* fix variable naming

* bug fix

* minor code improvements

* add a test to make sure that `Iterate` iterates in the right order

* add comment
This commit is contained in:
Toby
2022-07-24 12:50:41 -07:00
committed by GitHub
parent 56a24f3e4c
commit d5efd340c7
4 changed files with 89 additions and 36 deletions

View File

@@ -25,11 +25,12 @@ var _ = Describe("SentPacketHistory", func() {
}
}
var listLen int
for el := hist.packetList.Front(); el != nil; el = el.Next() {
if !el.Value.skippedPacket {
hist.Iterate(func(p *Packet) (bool, error) {
if !p.skippedPacket {
listLen++
}
}
return true, nil
})
ExpectWithOffset(1, mapLen).To(Equal(len(packetNumbers)))
ExpectWithOffset(1, listLen).To(Equal(len(packetNumbers)))
i := 0
@@ -63,9 +64,10 @@ var _ = Describe("SentPacketHistory", func() {
hist.SentPacket(&Packet{PacketNumber: 3}, false)
hist.SentPacket(&Packet{PacketNumber: 4}, true)
expectInHistory([]protocol.PacketNumber{1, 4})
for el := hist.packetList.Front(); el != nil; el = el.Next() {
Expect(el.Value.PacketNumber).ToNot(Equal(protocol.PacketNumber(3)))
}
hist.Iterate(func(p *Packet) (bool, error) {
Expect(p.PacketNumber).ToNot(Equal(protocol.PacketNumber(3)))
return true, nil
})
})
It("gets the length", func() {
@@ -132,17 +134,19 @@ var _ = Describe("SentPacketHistory", func() {
})
It("also iterates over skipped packets", func() {
var packets, skippedPackets []protocol.PacketNumber
var packets, skippedPackets, allPackets []protocol.PacketNumber
Expect(hist.Iterate(func(p *Packet) (bool, error) {
if p.skippedPacket {
skippedPackets = append(skippedPackets, p.PacketNumber)
} else {
packets = append(packets, p.PacketNumber)
}
allPackets = append(allPackets, p.PacketNumber)
return true, nil
})).To(Succeed())
Expect(packets).To(Equal([]protocol.PacketNumber{1, 4, 8}))
Expect(skippedPackets).To(Equal([]protocol.PacketNumber{0, 2, 3, 5, 6, 7}))
Expect(allPackets).To(Equal([]protocol.PacketNumber{0, 1, 2, 3, 4, 5, 6, 7, 8}))
})
It("stops iterating", func() {