forked from quic-go/quic-go
add implementation for SentPacket in OutgoingPacketAckHandler
This commit is contained in:
45
ackhandler/outgoing_packet_ack_handler.go
Normal file
45
ackhandler/outgoing_packet_ack_handler.go
Normal file
@@ -0,0 +1,45 @@
|
||||
package ackhandler
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"sync"
|
||||
|
||||
"github.com/lucas-clemente/quic-go/frames"
|
||||
"github.com/lucas-clemente/quic-go/protocol"
|
||||
)
|
||||
|
||||
type outgoingPacketAckHandler struct {
|
||||
lastSentPacketNumber protocol.PacketNumber
|
||||
packetHistory map[protocol.PacketNumber]*Packet
|
||||
packetHistoryMutex sync.Mutex
|
||||
}
|
||||
|
||||
// NewOutgoingPacketAckHandler creates a new outgoingPacketAckHandler
|
||||
func NewOutgoingPacketAckHandler() OutgoingPacketAckHandler {
|
||||
return &outgoingPacketAckHandler{
|
||||
packetHistory: make(map[protocol.PacketNumber]*Packet),
|
||||
}
|
||||
}
|
||||
|
||||
func (h *outgoingPacketAckHandler) SentPacket(packet *Packet) error {
|
||||
h.packetHistoryMutex.Lock()
|
||||
defer h.packetHistoryMutex.Unlock()
|
||||
_, ok := h.packetHistory[packet.PacketNumber]
|
||||
if ok {
|
||||
return errors.New("Packet number already exists in Packet History")
|
||||
}
|
||||
if h.lastSentPacketNumber+1 != packet.PacketNumber {
|
||||
return errors.New("Packet number must be increased by exactly 1")
|
||||
}
|
||||
h.lastSentPacketNumber = packet.PacketNumber
|
||||
h.packetHistory[packet.PacketNumber] = packet
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h *outgoingPacketAckHandler) ReceivedAck(ackFrame *frames.AckFrame) {
|
||||
return
|
||||
}
|
||||
|
||||
func (h *outgoingPacketAckHandler) DequeuePacketForRetransmission() (packet *Packet) {
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user