github.com/hxx258456/ccgo@v0.0.5-0.20230213014102-48b35f46f66f/grpc/backoff/backoff.go (about)

     1  /*
     2   *
     3   * Copyright 2019 gRPC authors.
     4   *
     5   * Licensed under the Apache License, Version 2.0 (the "License");
     6   * you may not use this file except in compliance with the License.
     7   * You may obtain a copy of the License at
     8   *
     9   *     http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the License for the specific language governing permissions and
    15   * limitations under the License.
    16   *
    17   */
    18  
    19  // Package backoff provides configuration options for backoff.
    20  //
    21  // More details can be found at:
    22  // https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md.
    23  //
    24  // All APIs in this package are experimental.
    25  package backoff
    26  
    27  import "time"
    28  
    29  // Config defines the configuration options for backoff.
    30  type Config struct {
    31  	// BaseDelay is the amount of time to backoff after the first failure.
    32  	BaseDelay time.Duration
    33  	// Multiplier is the factor with which to multiply backoffs after a
    34  	// failed retry. Should ideally be greater than 1.
    35  	Multiplier float64
    36  	// Jitter is the factor with which backoffs are randomized.
    37  	Jitter float64
    38  	// MaxDelay is the upper bound of backoff delay.
    39  	MaxDelay time.Duration
    40  }
    41  
    42  // DefaultConfig is a backoff configuration with the default values specfied
    43  // at https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md.
    44  //
    45  // This should be useful for callers who want to configure backoff with
    46  // non-default values only for a subset of the options.
    47  var DefaultConfig = Config{
    48  	BaseDelay:  1.0 * time.Second,
    49  	Multiplier: 1.6,
    50  	Jitter:     0.2,
    51  	MaxDelay:   120 * time.Second,
    52  }