Files
golang.net/quic/ack_delay.go
Damien Neil dd0b200aed quic: remove go1.21 build constraint
The x/net go.mod now depends on go1.23.

Change-Id: I24960949d84753f84f75fbdc97b7dfb92191a4d2
Reviewed-on: https://go-review.googlesource.com/c/net/+/664295
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
Auto-Submit: Damien Neil <dneil@google.com>
2025-04-09 15:11:44 -07:00

27 lines
801 B
Go

// Copyright 2023 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package quic
import (
"math"
"time"
)
// An unscaledAckDelay is an ACK Delay field value from an ACK packet,
// without the ack_delay_exponent scaling applied.
type unscaledAckDelay int64
func unscaledAckDelayFromDuration(d time.Duration, ackDelayExponent uint8) unscaledAckDelay {
return unscaledAckDelay(d.Microseconds() >> ackDelayExponent)
}
func (d unscaledAckDelay) Duration(ackDelayExponent uint8) time.Duration {
if int64(d) > (math.MaxInt64>>ackDelayExponent)/int64(time.Microsecond) {
// If scaling the delay would overflow, ignore the delay.
return 0
}
return time.Duration(d<<ackDelayExponent) * time.Microsecond
}