chore: migrate to gitea
This commit is contained in:
60
vendor/github.com/quic-go/quic-go/internal/ackhandler/packet.go
generated
vendored
Normal file
60
vendor/github.com/quic-go/quic-go/internal/ackhandler/packet.go
generated
vendored
Normal file
@@ -0,0 +1,60 @@
|
||||
package ackhandler
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"github.com/quic-go/quic-go/internal/monotime"
|
||||
"github.com/quic-go/quic-go/internal/protocol"
|
||||
)
|
||||
|
||||
type packetWithPacketNumber struct {
|
||||
PacketNumber protocol.PacketNumber
|
||||
*packet
|
||||
}
|
||||
|
||||
// A Packet is a packet
|
||||
type packet struct {
|
||||
SendTime monotime.Time
|
||||
StreamFrames []StreamFrame
|
||||
Frames []Frame
|
||||
LargestAcked protocol.PacketNumber // InvalidPacketNumber if the packet doesn't contain an ACK
|
||||
Length protocol.ByteCount
|
||||
EncryptionLevel protocol.EncryptionLevel
|
||||
|
||||
IsPathMTUProbePacket bool // We don't report the loss of Path MTU probe packets to the congestion controller.
|
||||
|
||||
includedInBytesInFlight bool
|
||||
isPathProbePacket bool
|
||||
}
|
||||
|
||||
func (p *packet) Outstanding() bool {
|
||||
return !p.IsPathMTUProbePacket && !p.isPathProbePacket && p.IsAckEliciting()
|
||||
}
|
||||
|
||||
func (p *packet) IsAckEliciting() bool {
|
||||
return len(p.StreamFrames) > 0 || len(p.Frames) > 0
|
||||
}
|
||||
|
||||
var packetPool = sync.Pool{New: func() any { return &packet{} }}
|
||||
|
||||
func getPacket() *packet {
|
||||
p := packetPool.Get().(*packet)
|
||||
p.StreamFrames = nil
|
||||
p.Frames = nil
|
||||
p.LargestAcked = 0
|
||||
p.Length = 0
|
||||
p.EncryptionLevel = protocol.EncryptionLevel(0)
|
||||
p.SendTime = 0
|
||||
p.IsPathMTUProbePacket = false
|
||||
p.includedInBytesInFlight = false
|
||||
p.isPathProbePacket = false
|
||||
return p
|
||||
}
|
||||
|
||||
// We currently only return Packets back into the pool when they're acknowledged (not when they're lost).
|
||||
// This simplifies the code, and gives the vast majority of the performance benefit we can gain from using the pool.
|
||||
func putPacket(p *packet) {
|
||||
p.Frames = nil
|
||||
p.StreamFrames = nil
|
||||
packetPool.Put(p)
|
||||
}
|
||||
Reference in New Issue
Block a user