forked from quic-go/quic-go
calculate the Entropy byte for the highest in order received packet
This commit is contained in:
@@ -11,9 +11,10 @@ var ErrDuplicatePacket = errors.New("Duplicate Packet")
|
||||
|
||||
// The AckHandler handles ACKs
|
||||
type incomingPacketAckHandler struct {
|
||||
highestInOrderObserved protocol.PacketNumber
|
||||
largestObserved protocol.PacketNumber
|
||||
packetHistory map[protocol.PacketNumber]bool
|
||||
highestInOrderObserved protocol.PacketNumber
|
||||
highestInOrderObservedEntropy EntropyAccumulator
|
||||
largestObserved protocol.PacketNumber
|
||||
packetHistory map[protocol.PacketNumber]bool
|
||||
}
|
||||
|
||||
// NewIncomingPacketAckHandler creates a new outgoingPacketAckHandler
|
||||
@@ -37,6 +38,7 @@ func (h *incomingPacketAckHandler) ReceivedPacket(packetNumber protocol.PacketNu
|
||||
|
||||
if packetNumber == h.highestInOrderObserved+1 {
|
||||
h.highestInOrderObserved = packetNumber
|
||||
h.highestInOrderObservedEntropy.Add(packetNumber, entropyBit)
|
||||
}
|
||||
|
||||
h.packetHistory[packetNumber] = true
|
||||
|
||||
@@ -48,7 +48,39 @@ var _ = Describe("incomingPacketAckHandler", func() {
|
||||
})
|
||||
|
||||
Context("Entropy calculation", func() {
|
||||
// It("calculates the entropy f")
|
||||
It("calculates the entropy for continously received packets", func() {
|
||||
entropy := EntropyAccumulator(0)
|
||||
for i := 1; i < 100; i++ {
|
||||
entropyBit := false
|
||||
if i%3 == 0 || i%5 == 0 {
|
||||
entropyBit = true
|
||||
}
|
||||
entropy.Add(protocol.PacketNumber(i), entropyBit)
|
||||
err := handler.ReceivedPacket(protocol.PacketNumber(i), entropyBit)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
}
|
||||
Expect(handler.highestInOrderObservedEntropy).To(Equal(entropy))
|
||||
})
|
||||
|
||||
It("calculates the entropy if there is a NACK range", func() {
|
||||
entropy := EntropyAccumulator(0)
|
||||
for i := 1; i < 100; i++ {
|
||||
entropyBit := false
|
||||
if i%3 == 0 || i%5 == 0 {
|
||||
entropyBit = true
|
||||
}
|
||||
|
||||
if i == 10 || i == 11 || i == 12 {
|
||||
continue
|
||||
}
|
||||
if i < 10 {
|
||||
entropy.Add(protocol.PacketNumber(i), entropyBit)
|
||||
}
|
||||
err := handler.ReceivedPacket(protocol.PacketNumber(i), entropyBit)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
}
|
||||
Expect(handler.highestInOrderObservedEntropy).To(Equal(entropy))
|
||||
})
|
||||
})
|
||||
|
||||
Context("NACK range calculation", func() {
|
||||
|
||||
Reference in New Issue
Block a user