Change algorithm of TCP relaying

This commit is contained in:
9seconds
2021-08-27 17:22:36 +03:00
parent 4b7be8c565
commit 456ed5b051
18 changed files with 300 additions and 434 deletions
+26
View File
@@ -0,0 +1,26 @@
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
}