1
0
Fork 0
mirror of https://git.rwth-aachen.de/acs/public/villas/node/ synced 2025-03-23 00:00:01 +01:00
VILLASnode/go/pkg/nodes/webrtc/backoff.go
Steffen Vogel 7eec1bb753 update Steffens mail address
Signed-off-by: Steffen Vogel <post@steffenvogel.de>
2022-12-16 23:44:07 +01:00

38 lines
870 B
Go

/** Exponential backoffs for reconnect timing.
*
* @author Steffen Vogel <post@steffenvogel.de>
* @copyright 2014-2022, Institute for Automation of Complex Power Systems, EONERC
* @license Apache 2.0
*********************************************************************************/
package webrtc
import "time"
var DefaultExponentialBackoff = ExponentialBackoff{
Factor: 1.5,
Maximum: 1 * time.Minute,
Initial: 1 * time.Second,
Duration: 1 * time.Second,
}
type ExponentialBackoff struct {
Factor float32
Maximum time.Duration
Initial time.Duration
Duration time.Duration
}
func (e *ExponentialBackoff) Next() time.Duration {
e.Duration = time.Duration(1.5 * float32(e.Duration)).Round(time.Second)
if e.Duration > e.Maximum {
e.Duration = e.Maximum
}
return e.Duration
}
func (e *ExponentialBackoff) Reset() {
e.Duration = e.Initial
}