change AckHandler interfaces to allow forcing a StopWaitingFrame

ref #259
This commit is contained in:
Marten Seemann
2016-08-18 12:43:59 +07:00
parent 7d05ebf0bb
commit 7d05640b24
7 changed files with 9 additions and 9 deletions

View File

@@ -13,7 +13,7 @@ type SentPacketHandler interface {
SentPacket(packet *ackhandlerlegacy.Packet) error
ReceivedAck(ackFrame *frames.AckFrame, withPacketNumber protocol.PacketNumber) error
GetStopWaitingFrame() *frames.StopWaitingFrame
GetStopWaitingFrame(force bool) *frames.StopWaitingFrame
MaybeQueueRTOs()
DequeuePacketForRetransmission() (packet *ackhandlerlegacy.Packet)

View File

@@ -265,8 +265,8 @@ func (h *sentPacketHandler) GetLeastUnacked() protocol.PacketNumber {
return h.largestInOrderAcked() + 1
}
func (h *sentPacketHandler) GetStopWaitingFrame() *frames.StopWaitingFrame {
return h.stopWaitingManager.GetStopWaitingFrame(false)
func (h *sentPacketHandler) GetStopWaitingFrame(force bool) *frames.StopWaitingFrame {
return h.stopWaitingManager.GetStopWaitingFrame(force)
}
func (h *sentPacketHandler) CongestionAllowsSending() bool {

View File

@@ -614,12 +614,12 @@ var _ = Describe("SentPacketHandler", func() {
ack := frames.AckFrame{LargestAcked: 5, LowestAcked: 5}
err := handler.ReceivedAck(&ack, 1)
Expect(err).ToNot(HaveOccurred())
Expect(handler.GetStopWaitingFrame()).To(Equal(&frames.StopWaitingFrame{LeastUnacked: 6}))
Expect(handler.GetStopWaitingFrame(false)).To(Equal(&frames.StopWaitingFrame{LeastUnacked: 6}))
})
It("gets a StopWaitingFrame after queueing a retransmission", func() {
handler.queuePacketForRetransmission(getPacketElement(5))
Expect(handler.GetStopWaitingFrame()).To(Equal(&frames.StopWaitingFrame{LeastUnacked: 6}))
Expect(handler.GetStopWaitingFrame(false)).To(Equal(&frames.StopWaitingFrame{LeastUnacked: 6}))
})
})
})

View File

@@ -12,7 +12,7 @@ type SentPacketHandler interface {
SentPacket(packet *Packet) error
ReceivedAck(ackFrame *frames.AckFrame, withPacketNumber protocol.PacketNumber) error
GetStopWaitingFrame() *frames.StopWaitingFrame
GetStopWaitingFrame(force bool) *frames.StopWaitingFrame
MaybeQueueRTOs()
DequeuePacketForRetransmission() (packet *Packet)

View File

@@ -304,7 +304,7 @@ func (h *sentPacketHandler) GetLeastUnacked() protocol.PacketNumber {
return h.highestInOrderAckedPacketNumber + 1
}
func (h *sentPacketHandler) GetStopWaitingFrame() *frames.StopWaitingFrame {
func (h *sentPacketHandler) GetStopWaitingFrame(force bool) *frames.StopWaitingFrame {
panic("Legacy AckHandler should use StopWaitingManager")
}

View File

@@ -494,7 +494,7 @@ func (s *Session) sendPacket() error {
stopWaitingFrame = s.stopWaitingManager.GetStopWaitingFrame()
} else {
if ack != nil || hasRetransmission {
stopWaitingFrame = s.sentPacketHandler.GetStopWaitingFrame()
stopWaitingFrame = s.sentPacketHandler.GetStopWaitingFrame(false)
}
}
packet, err := s.packer.PackPacket(stopWaitingFrame, controlFrames, s.sentPacketHandler.GetLeastUnacked(), maySendOnlyAck)

View File

@@ -59,7 +59,7 @@ func (h *mockSentPacketHandler) ReceivedAck(ackFrame *frames.AckFrame, withPacke
}
func (h *mockSentPacketHandler) BytesInFlight() protocol.ByteCount { return 0 }
func (h *mockSentPacketHandler) GetLeastUnacked() protocol.PacketNumber { return 1 }
func (h *mockSentPacketHandler) GetStopWaitingFrame() *frames.StopWaitingFrame {
func (h *mockSentPacketHandler) GetStopWaitingFrame(force bool) *frames.StopWaitingFrame {
h.requestedStopWaiting = true
return nil
}