Documentation
¶
Index ¶
- func HasAckElicitingFrames(fs []Frame) bool
- func IsFrameAckEliciting(f wire.Frame) bool
- func IsFrameTypeAckEliciting(t wire.FrameType) bool
- type Frame
- type FrameHandler
- type ReceivedPacketHandler
- func (h *ReceivedPacketHandler) DropPackets(encLevel protocol.EncryptionLevel)
- func (h *ReceivedPacketHandler) GetAckFrame(encLevel protocol.EncryptionLevel, now monotime.Time, onlyIfQueued bool) *wire.AckFrame
- func (h *ReceivedPacketHandler) GetAlarmTimeout() monotime.Time
- func (h *ReceivedPacketHandler) IgnorePacketsBelow(pn protocol.PacketNumber)
- func (h *ReceivedPacketHandler) IsPotentiallyDuplicate(pn protocol.PacketNumber, encLevel protocol.EncryptionLevel) bool
- func (h *ReceivedPacketHandler) ReceivedPacket(pn protocol.PacketNumber, ecn protocol.ECN, encLevel protocol.EncryptionLevel, ...) error
- type SendMode
- type SentPacketHandler
- type StreamFrame
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func HasAckElicitingFrames ¶
HasAckElicitingFrames returns true if at least one frame is ack-eliciting.
func IsFrameAckEliciting ¶
IsFrameAckEliciting returns true if the frame is ack-eliciting.
func IsFrameTypeAckEliciting ¶
IsFrameTypeAckEliciting returns true if the frame is ack-eliciting.
Types ¶
type Frame ¶
type Frame struct {
Frame wire.Frame // nil if the frame has already been acknowledged in another packet
Handler FrameHandler
}
type FrameHandler ¶
FrameHandler handles the acknowledgement and the loss of a frame.
type ReceivedPacketHandler ¶
type ReceivedPacketHandler struct {
// contains filtered or unexported fields
}
func NewReceivedPacketHandler ¶
func NewReceivedPacketHandler(logger utils.Logger) *ReceivedPacketHandler
func (*ReceivedPacketHandler) DropPackets ¶
func (h *ReceivedPacketHandler) DropPackets(encLevel protocol.EncryptionLevel)
func (*ReceivedPacketHandler) GetAckFrame ¶
func (h *ReceivedPacketHandler) GetAckFrame(encLevel protocol.EncryptionLevel, now monotime.Time, onlyIfQueued bool) *wire.AckFrame
func (*ReceivedPacketHandler) GetAlarmTimeout ¶
func (h *ReceivedPacketHandler) GetAlarmTimeout() monotime.Time
func (*ReceivedPacketHandler) IgnorePacketsBelow ¶
func (h *ReceivedPacketHandler) IgnorePacketsBelow(pn protocol.PacketNumber)
func (*ReceivedPacketHandler) IsPotentiallyDuplicate ¶
func (h *ReceivedPacketHandler) IsPotentiallyDuplicate(pn protocol.PacketNumber, encLevel protocol.EncryptionLevel) bool
func (*ReceivedPacketHandler) ReceivedPacket ¶
func (h *ReceivedPacketHandler) ReceivedPacket( pn protocol.PacketNumber, ecn protocol.ECN, encLevel protocol.EncryptionLevel, rcvTime monotime.Time, ackEliciting bool, ) error
type SendMode ¶
type SendMode uint8
The SendMode says what kind of packets can be sent.
const ( // SendNone means that no packets should be sent SendNone SendMode = iota // SendAck means an ACK-only packet should be sent SendAck // SendPTOInitial means that an Initial probe packet should be sent SendPTOInitial // SendPTOHandshake means that a Handshake probe packet should be sent SendPTOHandshake // SendPTOAppData means that an Application data probe packet should be sent SendPTOAppData // 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. SendPacingLimited // SendAny means that any packet should be sent SendAny )
type SentPacketHandler ¶
type SentPacketHandler interface {
// SentPacket may modify the packet
SentPacket(t monotime.Time, pn, largestAcked protocol.PacketNumber, streamFrames []StreamFrame, frames []Frame, encLevel protocol.EncryptionLevel, ecn protocol.ECN, size protocol.ByteCount, isPathMTUProbePacket, isPathProbePacket bool)
// ReceivedAck processes an ACK frame.
// It does not store a copy of the frame.
ReceivedAck(f *wire.AckFrame, encLevel protocol.EncryptionLevel, rcvTime monotime.Time) (bool, error)
ReceivedPacket(protocol.EncryptionLevel, monotime.Time)
ReceivedBytes(_ protocol.ByteCount, rcvTime monotime.Time)
DropPackets(_ protocol.EncryptionLevel, rcvTime monotime.Time)
ResetForRetry(rcvTime monotime.Time)
// The SendMode determines if and what kind of packets can be sent.
SendMode(now monotime.Time) SendMode
// TimeUntilSend is the time when the next packet should be sent.
// It is used for pacing packets.
TimeUntilSend() monotime.Time
SetMaxDatagramSize(count protocol.ByteCount)
// only to be called once the handshake is complete
QueueProbePacket(protocol.EncryptionLevel) bool /* was a packet queued */
ECNMode(isShortHeaderPacket bool) protocol.ECN // isShortHeaderPacket should only be true for non-coalesced 1-RTT packets
PeekPacketNumber(protocol.EncryptionLevel) (protocol.PacketNumber, protocol.PacketNumberLen)
PopPacketNumber(protocol.EncryptionLevel) protocol.PacketNumber
GetLossDetectionTimeout() monotime.Time
OnLossDetectionTimeout(now monotime.Time) error
MigratedPath(now monotime.Time, initialMaxPacketSize protocol.ByteCount)
}
SentPacketHandler handles ACKs received for outgoing packets
func NewSentPacketHandler ¶
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
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.
type StreamFrame ¶
type StreamFrame struct {
Frame *wire.StreamFrame
Handler FrameHandler
}
Click to show internal directories.
Click to hide internal directories.