diff --git a/frames/ack_frame_new.go b/frames/ack_frame_new.go index 7e211b80..c52cf542 100644 --- a/frames/ack_frame_new.go +++ b/frames/ack_frame_new.go @@ -179,3 +179,11 @@ func (f *AckFrameNew) HasNACK() bool { } return false } + +// GetHighestInOrderPacketNumber gets the highest in order packet number that is confirmed by this ACK +func (f *AckFrameNew) GetHighestInOrderPacketNumber() protocol.PacketNumber { + if f.HasNACK() { + panic("NACKs not yet implemented") + } + return f.LargestObserved +} diff --git a/frames/ack_frame_new_test.go b/frames/ack_frame_new_test.go index 9564cc17..98d0d2a9 100644 --- a/frames/ack_frame_new_test.go +++ b/frames/ack_frame_new_test.go @@ -62,6 +62,16 @@ var _ = Describe("AckFrame", func() { }) }) + Context("highest in order packet number", func() { + It("gets the hightest in order packet number for a simple ACK", func() { + frame := &AckFrameNew{ + LargestObserved: 0x1337, + } + Expect(frame.GetHighestInOrderPacketNumber()).To(Equal(protocol.PacketNumber(0x1337))) + }) + + }) + Context("self-consistency checks", func() { var b *bytes.Buffer BeforeEach(func() {