From 650e9d38d3c5f29bf977291adee041955c592326 Mon Sep 17 00:00:00 2001 From: Lucas Clemente Date: Wed, 20 Apr 2016 12:15:03 +0200 Subject: [PATCH] move nackrange to frames --- ackhandler/ack_handler.go | 11 +++++++---- ackhandler/nack_range.go | 9 --------- frames/ack_frame.go | 13 +++++++++---- frames/ack_frame_test.go | 19 +++++++++---------- 4 files changed, 25 insertions(+), 27 deletions(-) delete mode 100644 ackhandler/nack_range.go diff --git a/ackhandler/ack_handler.go b/ackhandler/ack_handler.go index b05637cc..98c3e29a 100644 --- a/ackhandler/ack_handler.go +++ b/ackhandler/ack_handler.go @@ -1,6 +1,9 @@ package ackhandler -import "github.com/lucas-clemente/quic-go/protocol" +import ( + "github.com/lucas-clemente/quic-go/frames" + "github.com/lucas-clemente/quic-go/protocol" +) // The AckHandler handles ACKs type AckHandler struct { @@ -25,9 +28,9 @@ func (h *AckHandler) HandlePacket(packetNumber protocol.PacketNumber) { } // GetNackRanges gets all the NACK ranges -func (h *AckHandler) GetNackRanges() []*NackRange { +func (h *AckHandler) GetNackRanges() []*frames.NackRange { // ToDo: improve performance - var ranges []*NackRange + var ranges []*frames.NackRange inRange := false // ToDo: fix types for i := 0; i < int(h.LargestObserved); i++ { @@ -35,7 +38,7 @@ func (h *AckHandler) GetNackRanges() []*NackRange { _, ok := h.Observed[packetNumber] if !ok { if !inRange { - r := &NackRange{ + r := &frames.NackRange{ FirstPacketNumber: packetNumber, Length: 1, } diff --git a/ackhandler/nack_range.go b/ackhandler/nack_range.go deleted file mode 100644 index 9c3be8e2..00000000 --- a/ackhandler/nack_range.go +++ /dev/null @@ -1,9 +0,0 @@ -package ackhandler - -import "github.com/lucas-clemente/quic-go/protocol" - -// NackRange is a NACK range -type NackRange struct { - FirstPacketNumber protocol.PacketNumber - Length uint8 -} diff --git a/frames/ack_frame.go b/frames/ack_frame.go index 4cbd46c7..61aac9ff 100644 --- a/frames/ack_frame.go +++ b/frames/ack_frame.go @@ -4,17 +4,22 @@ import ( "bytes" "errors" - "github.com/lucas-clemente/quic-go/ackhandler" "github.com/lucas-clemente/quic-go/protocol" "github.com/lucas-clemente/quic-go/utils" ) +// NackRange is a NACK range +type NackRange struct { + FirstPacketNumber protocol.PacketNumber + Length uint8 +} + // An AckFrame in QUIC type AckFrame struct { Entropy byte LargestObserved protocol.PacketNumber DelayTime uint16 // Todo: properly interpret this value as described in the specification - NackRanges []*ackhandler.NackRange + NackRanges []NackRange } // Write writes an ACK frame. @@ -160,7 +165,7 @@ func ParseAckFrame(r *bytes.Reader) (*AckFrame, error) { } rangeLength := uint8(rangeLengthByte) - nackRange := ackhandler.NackRange{ + nackRange := NackRange{ Length: uint8(rangeLength + 1), } if i == 0 { @@ -172,7 +177,7 @@ func ParseAckFrame(r *bytes.Reader) (*AckFrame, error) { lastNackRange := frame.NackRanges[len(frame.NackRanges)-1] nackRange.FirstPacketNumber = lastNackRange.FirstPacketNumber - protocol.PacketNumber(missingPacketSequenceNumberDelta+uint64(rangeLength)) - 1 } - frame.NackRanges = append(frame.NackRanges, &nackRange) + frame.NackRanges = append(frame.NackRanges, nackRange) } } diff --git a/frames/ack_frame_test.go b/frames/ack_frame_test.go index d3dccd4c..400013ef 100644 --- a/frames/ack_frame_test.go +++ b/frames/ack_frame_test.go @@ -3,7 +3,6 @@ package frames import ( "bytes" - "github.com/lucas-clemente/quic-go/ackhandler" "github.com/lucas-clemente/quic-go/protocol" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" @@ -90,14 +89,14 @@ var _ = Describe("AckFrame", func() { It("writes a frame with one NACK range", func() { b := &bytes.Buffer{} - nackRange := ackhandler.NackRange{ + nackRange := NackRange{ FirstPacketNumber: 2, Length: 1, } frame := AckFrame{ Entropy: 2, LargestObserved: 4, - NackRanges: []*ackhandler.NackRange{&nackRange}, + NackRanges: []NackRange{nackRange}, } err := frame.Write(b) Expect(err).ToNot(HaveOccurred()) @@ -111,18 +110,18 @@ var _ = Describe("AckFrame", func() { It("writes a frame with multiple NACK ranges", func() { b := &bytes.Buffer{} - nackRange1 := ackhandler.NackRange{ + nackRange1 := NackRange{ FirstPacketNumber: 4, Length: 3, } - nackRange2 := ackhandler.NackRange{ + nackRange2 := NackRange{ FirstPacketNumber: 2, Length: 1, } frame := AckFrame{ Entropy: 2, LargestObserved: 7, - NackRanges: []*ackhandler.NackRange{&nackRange1, &nackRange2}, + NackRanges: []NackRange{nackRange1, nackRange2}, } err := frame.Write(b) Expect(err).ToNot(HaveOccurred()) @@ -156,10 +155,10 @@ var _ = Describe("AckFrame", func() { It("is self-consistent for ACK frames with NACK ranges", func() { b := &bytes.Buffer{} - nackRanges := []*ackhandler.NackRange{ - &ackhandler.NackRange{FirstPacketNumber: 9, Length: 3}, - &ackhandler.NackRange{FirstPacketNumber: 7, Length: 1}, - &ackhandler.NackRange{FirstPacketNumber: 2, Length: 2}, + nackRanges := []NackRange{ + NackRange{FirstPacketNumber: 9, Length: 3}, + NackRange{FirstPacketNumber: 7, Length: 1}, + NackRange{FirstPacketNumber: 2, Length: 2}, } frameOrig := &AckFrame{ LargestObserved: 15,