forked from quic-go/quic-go
rename IncomingPacketAckHandler to ReceivedPacketHandler
This commit is contained in:
@@ -13,8 +13,8 @@ type SentPacketHandler interface {
|
||||
DequeuePacketForRetransmission() (packet *Packet)
|
||||
}
|
||||
|
||||
// IncomingPacketAckHandler handles ACKs needed to send for incoming packets
|
||||
type IncomingPacketAckHandler interface {
|
||||
// ReceivedPacketHandler handles ACKs needed to send for incoming packets
|
||||
type ReceivedPacketHandler interface {
|
||||
ReceivedPacket(packetNumber protocol.PacketNumber, entropyBit bool) error
|
||||
ReceivedStopWaiting(*frames.StopWaitingFrame) error
|
||||
|
||||
|
||||
@@ -7,24 +7,23 @@ import (
|
||||
"github.com/lucas-clemente/quic-go/protocol"
|
||||
)
|
||||
|
||||
var ErrDuplicatePacket = errors.New("Duplicate Packet")
|
||||
var ErrDuplicatePacket = errors.New("ReceivedPacketHandler: Duplicate Packet")
|
||||
|
||||
// The AckHandler handles ACKs
|
||||
type incomingPacketAckHandler struct {
|
||||
type receivedPacketHandler struct {
|
||||
highestInOrderObserved protocol.PacketNumber
|
||||
highestInOrderObservedEntropy EntropyAccumulator
|
||||
largestObserved protocol.PacketNumber
|
||||
packetHistory map[protocol.PacketNumber]bool // the bool is the EntropyBit of the packet
|
||||
}
|
||||
|
||||
// NewIncomingPacketAckHandler creates a new outgoingPacketAckHandler
|
||||
func NewIncomingPacketAckHandler() IncomingPacketAckHandler {
|
||||
return &incomingPacketAckHandler{
|
||||
// NewReceivedPacketHandler creates a new receivedPacketHandler
|
||||
func NewReceivedPacketHandler() ReceivedPacketHandler {
|
||||
return &receivedPacketHandler{
|
||||
packetHistory: make(map[protocol.PacketNumber]bool),
|
||||
}
|
||||
}
|
||||
|
||||
func (h *incomingPacketAckHandler) ReceivedPacket(packetNumber protocol.PacketNumber, entropyBit bool) error {
|
||||
func (h *receivedPacketHandler) ReceivedPacket(packetNumber protocol.PacketNumber, entropyBit bool) error {
|
||||
if packetNumber == 0 {
|
||||
return errors.New("Invalid packet number")
|
||||
}
|
||||
@@ -45,7 +44,7 @@ func (h *incomingPacketAckHandler) ReceivedPacket(packetNumber protocol.PacketNu
|
||||
return nil
|
||||
}
|
||||
|
||||
func (h *incomingPacketAckHandler) ReceivedStopWaiting(f *frames.StopWaitingFrame) error {
|
||||
func (h *receivedPacketHandler) ReceivedStopWaiting(f *frames.StopWaitingFrame) error {
|
||||
// Ignore if STOP_WAITING is unneeded
|
||||
if h.highestInOrderObserved >= f.LeastUnacked {
|
||||
return nil
|
||||
@@ -58,7 +57,7 @@ func (h *incomingPacketAckHandler) ReceivedStopWaiting(f *frames.StopWaitingFram
|
||||
}
|
||||
|
||||
// getNackRanges gets all the NACK ranges
|
||||
func (h *incomingPacketAckHandler) getNackRanges() ([]frames.NackRange, EntropyAccumulator) {
|
||||
func (h *receivedPacketHandler) getNackRanges() ([]frames.NackRange, EntropyAccumulator) {
|
||||
// ToDo: use a better data structure here
|
||||
var ranges []frames.NackRange
|
||||
inRange := false
|
||||
@@ -84,7 +83,7 @@ func (h *incomingPacketAckHandler) getNackRanges() ([]frames.NackRange, EntropyA
|
||||
return ranges, entropy
|
||||
}
|
||||
|
||||
func (h *incomingPacketAckHandler) DequeueAckFrame() *frames.AckFrame {
|
||||
func (h *receivedPacketHandler) DequeueAckFrame() *frames.AckFrame {
|
||||
nackRanges, entropy := h.getNackRanges()
|
||||
return &frames.AckFrame{
|
||||
LargestObserved: h.largestObserved,
|
||||
@@ -8,14 +8,14 @@ import (
|
||||
. "github.com/onsi/gomega"
|
||||
)
|
||||
|
||||
var _ = Describe("incomingPacketAckHandler", func() {
|
||||
var _ = Describe("receivedPacketHandler", func() {
|
||||
var (
|
||||
handler *incomingPacketAckHandler
|
||||
handler *receivedPacketHandler
|
||||
expectedEntropy EntropyAccumulator
|
||||
)
|
||||
|
||||
BeforeEach(func() {
|
||||
handler = NewIncomingPacketAckHandler().(*incomingPacketAckHandler)
|
||||
handler = NewReceivedPacketHandler().(*receivedPacketHandler)
|
||||
expectedEntropy = EntropyAccumulator(0)
|
||||
})
|
||||
|
||||
22
session.go
22
session.go
@@ -34,8 +34,8 @@ type Session struct {
|
||||
streams map[protocol.StreamID]*stream
|
||||
streamsMutex sync.RWMutex
|
||||
|
||||
sentPacketHandler ackhandler.SentPacketHandler
|
||||
incomingAckHandler ackhandler.IncomingPacketAckHandler
|
||||
sentPacketHandler ackhandler.SentPacketHandler
|
||||
receivedPacketHandler ackhandler.ReceivedPacketHandler
|
||||
|
||||
unpacker *packetUnpacker
|
||||
packer *packetPacker
|
||||
@@ -46,12 +46,12 @@ type Session struct {
|
||||
// NewSession makes a new session
|
||||
func NewSession(conn *net.UDPConn, v protocol.VersionNumber, connectionID protocol.ConnectionID, sCfg *handshake.ServerConfig, streamCallback StreamCallback) PacketHandler {
|
||||
session := &Session{
|
||||
connection: conn,
|
||||
streamCallback: streamCallback,
|
||||
streams: make(map[protocol.StreamID]*stream),
|
||||
sentPacketHandler: ackhandler.NewSentPacketHandler(),
|
||||
incomingAckHandler: ackhandler.NewIncomingPacketAckHandler(),
|
||||
receivedPackets: make(chan receivedPacket),
|
||||
connection: conn,
|
||||
streamCallback: streamCallback,
|
||||
streams: make(map[protocol.StreamID]*stream),
|
||||
sentPacketHandler: ackhandler.NewSentPacketHandler(),
|
||||
receivedPacketHandler: ackhandler.NewReceivedPacketHandler(),
|
||||
receivedPackets: make(chan receivedPacket),
|
||||
}
|
||||
|
||||
cryptoStream, _ := session.NewStream(1)
|
||||
@@ -95,8 +95,8 @@ func (s *Session) handlePacket(addr *net.UDPAddr, publicHeader *PublicHeader, r
|
||||
return err
|
||||
}
|
||||
|
||||
s.incomingAckHandler.ReceivedPacket(publicHeader.PacketNumber, packet.entropyBit)
|
||||
s.QueueFrame(s.incomingAckHandler.DequeueAckFrame())
|
||||
s.receivedPacketHandler.ReceivedPacket(publicHeader.PacketNumber, packet.entropyBit)
|
||||
s.QueueFrame(s.receivedPacketHandler.DequeueAckFrame())
|
||||
|
||||
for _, ff := range packet.frames {
|
||||
var err error
|
||||
@@ -109,7 +109,7 @@ func (s *Session) handlePacket(addr *net.UDPAddr, publicHeader *PublicHeader, r
|
||||
case *frames.ConnectionCloseFrame:
|
||||
fmt.Printf("%#v\n", frame)
|
||||
case *frames.StopWaitingFrame:
|
||||
err = s.incomingAckHandler.ReceivedStopWaiting(frame)
|
||||
err = s.receivedPacketHandler.ReceivedStopWaiting(frame)
|
||||
case *frames.RstStreamFrame:
|
||||
fmt.Printf("%#v\n", frame)
|
||||
case *frames.WindowUpdateFrame:
|
||||
|
||||
Reference in New Issue
Block a user