mirror of
https://github.com/golang/net.git
synced 2026-03-31 18:37:08 +09:00
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>
27 lines
801 B
Go
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
|
|
}
|