internal.go raw

   1  /*
   2   * Copyright 2024 gRPC authors.
   3   *
   4   * Licensed under the Apache License, Version 2.0 (the "License");
   5   * you may not use this file except in compliance with the License.
   6   * You may obtain a copy of the License at
   7   *
   8   *     http://www.apache.org/licenses/LICENSE-2.0
   9   *
  10   * Unless required by applicable law or agreed to in writing, software
  11   * distributed under the License is distributed on an "AS IS" BASIS,
  12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13   * See the License for the specific language governing permissions and
  14   * limitations under the License.
  15   *
  16   */
  17  
  18  // Package internal contains code internal to the pickfirst package.
  19  package internal
  20  
  21  import (
  22  	rand "math/rand/v2"
  23  	"time"
  24  )
  25  
  26  var (
  27  	// RandShuffle pseudo-randomizes the order of addresses.
  28  	RandShuffle = rand.Shuffle
  29  	// TimeAfterFunc allows mocking the timer for testing connection delay
  30  	// related functionality.
  31  	TimeAfterFunc = func(d time.Duration, f func()) func() {
  32  		timer := time.AfterFunc(d, f)
  33  		return func() { timer.Stop() }
  34  	}
  35  )
  36