package ackhandler

Import Path
	github.com/quic-go/quic-go/internal/ackhandler (on go.dev)

Dependency Relation
	imports 14 packages, and imported by one package


Package-Level Type Names (total 6)
/* sort by: | */
// nil if the frame has already been acknowledged in another packet Handler FrameHandler func HasAckElicitingFrames(fs []Frame) bool func SentPacketHandler.SentPacket(t monotime.Time, pn, largestAcked protocol.PacketNumber, streamFrames []StreamFrame, frames []Frame, encLevel protocol.EncryptionLevel, ecn protocol.ECN, size protocol.ByteCount, isPathMTUProbePacket, isPathProbePacket bool)
FrameHandler handles the acknowledgement and the loss of a frame. ( FrameHandler) OnAcked(wire.Frame) ( FrameHandler) OnLost(wire.Frame)
(*ReceivedPacketHandler) DropPackets(encLevel protocol.EncryptionLevel) (*ReceivedPacketHandler) GetAckFrame(encLevel protocol.EncryptionLevel, now monotime.Time, onlyIfQueued bool) *wire.AckFrame (*ReceivedPacketHandler) GetAlarmTimeout() monotime.Time (*ReceivedPacketHandler) IgnorePacketsBelow(pn protocol.PacketNumber) (*ReceivedPacketHandler) IsPotentiallyDuplicate(pn protocol.PacketNumber, encLevel protocol.EncryptionLevel) bool (*ReceivedPacketHandler) ReceivedPacket(pn protocol.PacketNumber, ecn protocol.ECN, encLevel protocol.EncryptionLevel, rcvTime monotime.Time, ackEliciting bool) error func NewReceivedPacketHandler(logger utils.Logger) *ReceivedPacketHandler
The SendMode says what kind of packets can be sent. ( SendMode) String() string SendMode : expvar.Var SendMode : fmt.Stringer func SentPacketHandler.SendMode(now monotime.Time) SendMode const SendAck const SendAny const SendNone const SendPacingLimited const SendPTOAppData const SendPTOHandshake const SendPTOInitial
SentPacketHandler handles ACKs received for outgoing packets ( SentPacketHandler) DropPackets(_ protocol.EncryptionLevel, rcvTime monotime.Time) // isShortHeaderPacket should only be true for non-coalesced 1-RTT packets ( SentPacketHandler) GetLossDetectionTimeout() monotime.Time ( SentPacketHandler) MigratedPath(now monotime.Time, initialMaxPacketSize protocol.ByteCount) ( SentPacketHandler) OnLossDetectionTimeout(now monotime.Time) error ( SentPacketHandler) PeekPacketNumber(protocol.EncryptionLevel) (protocol.PacketNumber, protocol.PacketNumberLen) ( SentPacketHandler) PopPacketNumber(protocol.EncryptionLevel) protocol.PacketNumber only to be called once the handshake is complete // was a packet queued ReceivedAck processes an ACK frame. It does not store a copy of the frame. ( SentPacketHandler) ReceivedBytes(_ protocol.ByteCount, rcvTime monotime.Time) ( SentPacketHandler) ReceivedPacket(protocol.EncryptionLevel, monotime.Time) ( SentPacketHandler) ResetForRetry(rcvTime monotime.Time) The SendMode determines if and what kind of packets can be sent. SentPacket may modify the packet ( SentPacketHandler) SetMaxDatagramSize(count protocol.ByteCount) TimeUntilSend is the time when the next packet should be sent. It is used for pacing packets. func NewSentPacketHandler(initialPN protocol.PacketNumber, initialMaxDatagramSize protocol.ByteCount, rttStats *utils.RTTStats, connStats *utils.ConnectionStats, clientAddressValidated bool, enableECN bool, ignorePacketsBelow func(protocol.PacketNumber), pers protocol.Perspective, qlogger qlogwriter.Recorder, logger utils.Logger) SentPacketHandler
Frame *wire.StreamFrame Handler FrameHandler func SentPacketHandler.SentPacket(t monotime.Time, pn, largestAcked protocol.PacketNumber, streamFrames []StreamFrame, frames []Frame, encLevel protocol.EncryptionLevel, ecn protocol.ECN, size protocol.ByteCount, isPathMTUProbePacket, isPathProbePacket bool)
Package-Level Functions (total 5)
HasAckElicitingFrames returns true if at least one frame is ack-eliciting.
IsFrameAckEliciting returns true if the frame is ack-eliciting.
IsFrameTypeAckEliciting returns true if the frame is ack-eliciting.
clientAddressValidated indicates whether the address was validated beforehand by an address validation token. If the address was validated, the amplification limit doesn't apply. It has no effect for a client.
Package-Level Constants (total 7)
SendAck means an ACK-only packet should be sent
SendAny means that any packet should be sent
SendNone means that no packets should be sent
SendPacingLimited means that the pacer doesn't allow sending of a packet right now, but will do in a little while. The timestamp when sending is allowed again can be obtained via the SentPacketHandler.TimeUntilSend.
SendPTOAppData means that an Application data probe packet should be sent
SendPTOHandshake means that a Handshake probe packet should be sent
SendPTOInitial means that an Initial probe packet should be sent