...

Source file src/google.golang.org/grpc/internal/grpcrand/grpcrand_go1.21.go

Documentation: google.golang.org/grpc/internal/grpcrand

     1  //go:build go1.21
     2  
     3  /*
     4   *
     5   * Copyright 2024 gRPC authors.
     6   *
     7   * Licensed under the Apache License, Version 2.0 (the "License");
     8   * you may not use this file except in compliance with the License.
     9   * You may obtain a copy of the License at
    10   *
    11   *     http://www.apache.org/licenses/LICENSE-2.0
    12   *
    13   * Unless required by applicable law or agreed to in writing, software
    14   * distributed under the License is distributed on an "AS IS" BASIS,
    15   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    16   * See the License for the specific language governing permissions and
    17   * limitations under the License.
    18   *
    19   */
    20  
    21  // Package grpcrand implements math/rand functions in a concurrent-safe way
    22  // with a global random source, independent of math/rand's global source.
    23  package grpcrand
    24  
    25  import "math/rand"
    26  
    27  // This implementation will be used for Go version 1.21 or newer.
    28  // For older versions, the original implementation with mutex will be used.
    29  
    30  // Int implements rand.Int on the grpcrand global source.
    31  func Int() int {
    32  	return rand.Int()
    33  }
    34  
    35  // Int63n implements rand.Int63n on the grpcrand global source.
    36  func Int63n(n int64) int64 {
    37  	return rand.Int63n(n)
    38  }
    39  
    40  // Intn implements rand.Intn on the grpcrand global source.
    41  func Intn(n int) int {
    42  	return rand.Intn(n)
    43  }
    44  
    45  // Int31n implements rand.Int31n on the grpcrand global source.
    46  func Int31n(n int32) int32 {
    47  	return rand.Int31n(n)
    48  }
    49  
    50  // Float64 implements rand.Float64 on the grpcrand global source.
    51  func Float64() float64 {
    52  	return rand.Float64()
    53  }
    54  
    55  // Uint64 implements rand.Uint64 on the grpcrand global source.
    56  func Uint64() uint64 {
    57  	return rand.Uint64()
    58  }
    59  
    60  // Uint32 implements rand.Uint32 on the grpcrand global source.
    61  func Uint32() uint32 {
    62  	return rand.Uint32()
    63  }
    64  
    65  // ExpFloat64 implements rand.ExpFloat64 on the grpcrand global source.
    66  func ExpFloat64() float64 {
    67  	return rand.ExpFloat64()
    68  }
    69  
    70  // Shuffle implements rand.Shuffle on the grpcrand global source.
    71  var Shuffle = func(n int, f func(int, int)) {
    72  	rand.Shuffle(n, f)
    73  }
    74  

View as plain text