FILE / ScuroNeko/mtg

mtglib/internal/relay/timeouts.go

Исходный файл и его история в репозитории.
FILE 9d7290450854a69ed67732a76a629584afde495b
Files
mtg/mtglib/internal/relay/timeouts.go
T

27 lines
677 B
Go

package relay
import (
"math"
"math/rand"
"time"
)
func getConnectionTimeToLive() time.Duration {
return getTime(ConnectionTimeToLiveMin, ConnectionTimeToLiveMax)
}
func getTimeout() time.Duration {
return getTime(TimeoutMin, TimeoutMax)
}
func getTime(minDuration, maxDuration time.Duration) time.Duration {
minDurationInSeconds := minDuration.Seconds()
maxDurationInSeconds := maxDuration.Seconds()
middle := minDurationInSeconds + (maxDurationInSeconds-minDurationInSeconds)/2 // nolint: gomnd
number := minDurationInSeconds + rand.ExpFloat64()*middle
number = math.Round(math.Min(maxDurationInSeconds, number))
return time.Duration(number) * time.Second
}