1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00
moby--moby/vendor/github.com/docker/swarmkit/manager/dispatcher/period.go
Alexander Morozov f2614f2107 project: use vndr for vendoring
Signed-off-by: Alexander Morozov <lk4d4@docker.com>
2016-11-03 15:31:46 -07:00

28 lines
532 B
Go

package dispatcher
import (
"math/rand"
"time"
)
type periodChooser struct {
period time.Duration
epsilon time.Duration
rand *rand.Rand
}
func newPeriodChooser(period, eps time.Duration) *periodChooser {
return &periodChooser{
period: period,
epsilon: eps,
rand: rand.New(rand.NewSource(time.Now().UnixNano())),
}
}
func (pc *periodChooser) Choose() time.Duration {
var adj int64
if pc.epsilon > 0 {
adj = rand.Int63n(int64(2*pc.epsilon)) - int64(pc.epsilon)
}
return pc.period + time.Duration(adj)
}