Files
backrest/internal/oplog/randmodno.go

25 lines
490 B
Go

package oplog
import (
rand "math/rand/v2"
"sync"
"github.com/garethgeorge/backrest/internal/cryptoutil"
)
// setup a fast random number generator seeded with cryptographic randomness.
var mu sync.Mutex
var pgcRand = rand.NewPCG(cryptoutil.MustRandomUint64(), cryptoutil.MustRandomUint64())
var randGen = rand.New(pgcRand)
func NewRandomModno(lastModno int64) int64 {
mu.Lock()
defer mu.Unlock()
for {
modno := randGen.Int64()
if modno != lastModno {
return modno
}
}
}