From f958aa9e21ae23031e7f5037cc4b51b0aa021207 Mon Sep 17 00:00:00 2001 From: Marten Seemann Date: Sun, 26 Jun 2016 17:44:38 +0700 Subject: [PATCH] simplify packetHistory in new ReceivedPacketHandler --- ackhandlernew/received_packet_handler.go | 21 +++++++------------ ackhandlernew/received_packet_handler_test.go | 2 +- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/ackhandlernew/received_packet_handler.go b/ackhandlernew/received_packet_handler.go index 9385f4b76..9ffacac19 100644 --- a/ackhandlernew/received_packet_handler.go +++ b/ackhandlernew/received_packet_handler.go @@ -17,24 +17,20 @@ var ( errTooManyOutstandingReceivedPackets = qerr.Error(qerr.TooManyOutstandingReceivedPackets, "") ) -type packetHistoryEntry struct { - TimeReceived time.Time -} - type receivedPacketHandler struct { highestInOrderObserved protocol.PacketNumber largestObserved protocol.PacketNumber currentAckFrame *frames.AckFrameNew 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 - smallestInPacketHistory protocol.PacketNumber + packetHistory map[protocol.PacketNumber]time.Time + lowestInPacketHistory protocol.PacketNumber } // NewReceivedPacketHandler creates a new receivedPacketHandler func NewReceivedPacketHandler() ReceivedPacketHandler { return &receivedPacketHandler{ - packetHistory: make(map[protocol.PacketNumber]packetHistoryEntry), + packetHistory: make(map[protocol.PacketNumber]time.Time), } } @@ -59,9 +55,7 @@ func (h *receivedPacketHandler) ReceivedPacket(packetNumber protocol.PacketNumbe // h.highestInOrderObserved = packetNumber // } - h.packetHistory[packetNumber] = packetHistoryEntry{ - TimeReceived: time.Now(), - } + h.packetHistory[packetNumber] = time.Now() h.garbageCollect() @@ -125,11 +119,10 @@ func (h *receivedPacketHandler) GetAckFrame(dequeue bool) (*frames.AckFrameNew, return h.currentAckFrame, nil } - p, ok := h.packetHistory[h.largestObserved] + packetReceivedTime, ok := h.packetHistory[h.largestObserved] if !ok { return nil, ErrMapAccess } - packetReceivedTime := p.TimeReceived ackRanges := h.getAckRanges() h.currentAckFrame = &frames.AckFrameNew{ @@ -146,8 +139,8 @@ func (h *receivedPacketHandler) GetAckFrame(dequeue bool) (*frames.AckFrameNew, } func (h *receivedPacketHandler) garbageCollect() { - for i := h.smallestInPacketHistory; i < h.highestInOrderObserved; i++ { + for i := h.lowestInPacketHistory; i < h.highestInOrderObserved; i++ { delete(h.packetHistory, i) } - h.smallestInPacketHistory = h.highestInOrderObserved + h.lowestInPacketHistory = h.highestInOrderObserved } diff --git a/ackhandlernew/received_packet_handler_test.go b/ackhandlernew/received_packet_handler_test.go index 3c80be7d5..1918fe66a 100644 --- a/ackhandlernew/received_packet_handler_test.go +++ b/ackhandlernew/received_packet_handler_test.go @@ -59,7 +59,7 @@ var _ = Describe("receivedPacketHandler", func() { err := handler.ReceivedPacket(protocol.PacketNumber(3)) Expect(err).ToNot(HaveOccurred()) Expect(handler.packetHistory).To(HaveKey(protocol.PacketNumber(3))) - Expect(handler.packetHistory[3].TimeReceived).To(BeTemporally("~", time.Now(), 10*time.Millisecond)) + Expect(handler.packetHistory[3]).To(BeTemporally("~", time.Now(), 10*time.Millisecond)) }) It("doesn't store more than MaxTrackedReceivedPackets packets", func() {