diff options
Diffstat (limited to 'vendor/google.golang.org/grpc/internal/grpcrand')
| -rw-r--r-- | vendor/google.golang.org/grpc/internal/grpcrand/grpcrand.go | 74 | 
1 files changed, 74 insertions, 0 deletions
diff --git a/vendor/google.golang.org/grpc/internal/grpcrand/grpcrand.go b/vendor/google.golang.org/grpc/internal/grpcrand/grpcrand.go new file mode 100644 index 0000000..517ea70 --- /dev/null +++ b/vendor/google.golang.org/grpc/internal/grpcrand/grpcrand.go @@ -0,0 +1,74 @@ +/* + * + * Copyright 2018 gRPC authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + *     http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// Package grpcrand implements math/rand functions in a concurrent-safe way +// with a global random source, independent of math/rand's global source. +package grpcrand + +import ( +	"math/rand" +	"sync" +	"time" +) + +var ( +	r  = rand.New(rand.NewSource(time.Now().UnixNano())) +	mu sync.Mutex +) + +// Int implements rand.Int on the grpcrand global source. +func Int() int { +	mu.Lock() +	defer mu.Unlock() +	return r.Int() +} + +// Int63n implements rand.Int63n on the grpcrand global source. +func Int63n(n int64) int64 { +	mu.Lock() +	defer mu.Unlock() +	return r.Int63n(n) +} + +// Intn implements rand.Intn on the grpcrand global source. +func Intn(n int) int { +	mu.Lock() +	defer mu.Unlock() +	return r.Intn(n) +} + +// Int31n implements rand.Int31n on the grpcrand global source. +func Int31n(n int32) int32 { +	mu.Lock() +	defer mu.Unlock() +	return r.Int31n(n) +} + +// Float64 implements rand.Float64 on the grpcrand global source. +func Float64() float64 { +	mu.Lock() +	defer mu.Unlock() +	return r.Float64() +} + +// Uint64 implements rand.Uint64 on the grpcrand global source. +func Uint64() uint64 { +	mu.Lock() +	defer mu.Unlock() +	return r.Uint64() +}  | 
