| /* |
| * |
| * Copyright 2019 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 backoff provides configuration options for backoff. |
| // |
| // More details can be found at: |
| // https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md. |
| // |
| // All APIs in this package are experimental. |
| package backoff |
| |
| import "time" |
| |
| // Config defines the configuration options for backoff. |
| type Config struct { |
| // BaseDelay is the amount of time to backoff after the first failure. |
| BaseDelay time.Duration |
| // Multiplier is the factor with which to multiply backoffs after a |
| // failed retry. Should ideally be greater than 1. |
| Multiplier float64 |
| // Jitter is the factor with which backoffs are randomized. |
| Jitter float64 |
| // MaxDelay is the upper bound of backoff delay. |
| MaxDelay time.Duration |
| } |
| |
| // DefaultConfig is a backoff configuration with the default values specfied |
| // at https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md. |
| // |
| // This should be useful for callers who want to configure backoff with |
| // non-default values only for a subset of the options. |
| var DefaultConfig = Config{ |
| BaseDelay: 1.0 * time.Second, |
| Multiplier: 1.6, |
| Jitter: 0.2, |
| MaxDelay: 120 * time.Second, |
| } |