forked from quic-go/quic-go
rename OutgoingPacketAckHandler to SentPacketHandler
This commit is contained in:
@@ -5,8 +5,8 @@ import (
|
||||
"github.com/lucas-clemente/quic-go/protocol"
|
||||
)
|
||||
|
||||
// OutgoingPacketAckHandler handles ACKs received for outgoing packets
|
||||
type OutgoingPacketAckHandler interface {
|
||||
// SentPacketHandler handles ACKs received for outgoing packets
|
||||
type SentPacketHandler interface {
|
||||
SentPacket(packet *Packet) error
|
||||
ReceivedAck(ackFrame *frames.AckFrame) error
|
||||
|
||||
|
||||
@@ -8,14 +8,14 @@ import (
|
||||
)
|
||||
|
||||
var (
|
||||
errAckForUnsentPacket = errors.New("OutgoingPacketAckHandler: Received ACK for an unsent package")
|
||||
errDuplicateOrOutOfOrderAck = errors.New("OutgoingPacketAckHandler: Duplicate or out-of-order ACK")
|
||||
errEntropy = errors.New("OutgoingPacketAckHandler: Wrong entropy")
|
||||
errMapAccess = errors.New("OutgoingPacketAckHandler: Packet does not exist in PacketHistory")
|
||||
errAckForUnsentPacket = errors.New("SentPacketHandler: Received ACK for an unsent package")
|
||||
errDuplicateOrOutOfOrderAck = errors.New("SentPacketHandler: Duplicate or out-of-order ACK")
|
||||
errEntropy = errors.New("SentPacketHandler: Wrong entropy")
|
||||
errMapAccess = errors.New("SentPacketHandler: Packet does not exist in PacketHistory")
|
||||
retransmissionThreshold = uint8(3)
|
||||
)
|
||||
|
||||
type outgoingPacketAckHandler struct {
|
||||
type sentPacketHandler struct {
|
||||
lastSentPacketNumber protocol.PacketNumber
|
||||
lastSentPacketEntropy EntropyAccumulator
|
||||
highestInOrderAckedPacketNumber protocol.PacketNumber
|
||||
@@ -27,18 +27,18 @@ type outgoingPacketAckHandler struct {
|
||||
retransmissionQueue []*Packet // ToDo: use better data structure
|
||||
}
|
||||
|
||||
// NewOutgoingPacketAckHandler creates a new outgoingPacketAckHandler
|
||||
func NewOutgoingPacketAckHandler() OutgoingPacketAckHandler {
|
||||
return &outgoingPacketAckHandler{
|
||||
// NewSentPacketHandler creates a new sentPacketHandler
|
||||
func NewSentPacketHandler() SentPacketHandler {
|
||||
return &sentPacketHandler{
|
||||
packetHistory: make(map[protocol.PacketNumber]*Packet),
|
||||
}
|
||||
}
|
||||
|
||||
func (h *outgoingPacketAckHandler) ackPacket(packetNumber protocol.PacketNumber) {
|
||||
func (h *sentPacketHandler) ackPacket(packetNumber protocol.PacketNumber) {
|
||||
delete(h.packetHistory, packetNumber)
|
||||
}
|
||||
|
||||
func (h *outgoingPacketAckHandler) nackPacket(packetNumber protocol.PacketNumber) error {
|
||||
func (h *sentPacketHandler) nackPacket(packetNumber protocol.PacketNumber) error {
|
||||
packet, ok := h.packetHistory[packetNumber]
|
||||
if !ok {
|
||||
return errMapAccess
|
||||
@@ -52,7 +52,7 @@ func (h *outgoingPacketAckHandler) nackPacket(packetNumber protocol.PacketNumber
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h *outgoingPacketAckHandler) recalculateHighestInOrderAckedPacketNumberFromPacketHistory() {
|
||||
func (h *sentPacketHandler) recalculateHighestInOrderAckedPacketNumberFromPacketHistory() {
|
||||
for i := h.highestInOrderAckedPacketNumber; i <= h.lastSentPacketNumber; i++ {
|
||||
_, ok := h.packetHistory[i]
|
||||
if ok {
|
||||
@@ -62,13 +62,13 @@ func (h *outgoingPacketAckHandler) recalculateHighestInOrderAckedPacketNumberFro
|
||||
}
|
||||
}
|
||||
|
||||
func (h *outgoingPacketAckHandler) queuePacketForRetransmission(packet *Packet) {
|
||||
func (h *sentPacketHandler) queuePacketForRetransmission(packet *Packet) {
|
||||
h.retransmissionQueue = append(h.retransmissionQueue, packet)
|
||||
h.ackPacket(packet.PacketNumber)
|
||||
h.recalculateHighestInOrderAckedPacketNumberFromPacketHistory()
|
||||
}
|
||||
|
||||
func (h *outgoingPacketAckHandler) SentPacket(packet *Packet) error {
|
||||
func (h *sentPacketHandler) SentPacket(packet *Packet) error {
|
||||
_, ok := h.packetHistory[packet.PacketNumber]
|
||||
if ok {
|
||||
return errors.New("Packet number already exists in Packet History")
|
||||
@@ -84,7 +84,7 @@ func (h *outgoingPacketAckHandler) SentPacket(packet *Packet) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h *outgoingPacketAckHandler) calculateExpectedEntropy(ackFrame *frames.AckFrame) (EntropyAccumulator, error) {
|
||||
func (h *sentPacketHandler) calculateExpectedEntropy(ackFrame *frames.AckFrame) (EntropyAccumulator, error) {
|
||||
packet, ok := h.packetHistory[ackFrame.LargestObserved]
|
||||
if !ok {
|
||||
return 0, errMapAccess
|
||||
@@ -113,7 +113,7 @@ func (h *outgoingPacketAckHandler) calculateExpectedEntropy(ackFrame *frames.Ack
|
||||
return expectedEntropy, nil
|
||||
}
|
||||
|
||||
func (h *outgoingPacketAckHandler) ReceivedAck(ackFrame *frames.AckFrame) error {
|
||||
func (h *sentPacketHandler) ReceivedAck(ackFrame *frames.AckFrame) error {
|
||||
if ackFrame.LargestObserved > h.lastSentPacketNumber {
|
||||
return errAckForUnsentPacket
|
||||
}
|
||||
@@ -163,7 +163,7 @@ func (h *outgoingPacketAckHandler) ReceivedAck(ackFrame *frames.AckFrame) error
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h *outgoingPacketAckHandler) DequeuePacketForRetransmission() (packet *Packet) {
|
||||
func (h *sentPacketHandler) DequeuePacketForRetransmission() (packet *Packet) {
|
||||
if len(h.retransmissionQueue) == 0 {
|
||||
return nil
|
||||
}
|
||||
@@ -7,10 +7,10 @@ import (
|
||||
. "github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
var _ = Describe("AckHandler", func() {
|
||||
var handler *outgoingPacketAckHandler
|
||||
var _ = Describe("SentPacketHandler", func() {
|
||||
var handler *sentPacketHandler
|
||||
BeforeEach(func() {
|
||||
handler = NewOutgoingPacketAckHandler().(*outgoingPacketAckHandler)
|
||||
handler = NewSentPacketHandler().(*sentPacketHandler)
|
||||
})
|
||||
|
||||
Context("SentPacket", func() {
|
||||
Reference in New Issue
Block a user