go.charczuk.com@v0.0.0-20240327042549-bc490516bd1a/sdk/breaker/config.go (about)

     1  package breaker
     2  
     3  import "time"
     4  
     5  // Config is the breaker config.
     6  type Config struct {
     7  	FailureThreshold            uint64        `json:"failureThreshold" yaml:"failureThreshold"`
     8  	HalfOpenMaxActions          uint64        `json:"halfOpenMaxActions" yaml:"halfOpenMaxActions"`
     9  	OpenExpiryInterval          time.Duration `json:"openExpiryInterval" yaml:"openExpiryInterval"`
    10  	ClosedFailureExpiryInterval time.Duration `json:"closedFailureExpiryInterval" yaml:"closedFailureExpiryInterval"`
    11  }
    12  
    13  func (c Config) FailureThresholdOrDefault() uint64 {
    14  	if c.FailureThreshold > 0 {
    15  		return c.FailureThreshold
    16  	}
    17  	return DefaultFailureThreshold
    18  }
    19  
    20  func (c Config) HalfOpenMaxActionsOrDefault() uint64 {
    21  	if c.HalfOpenMaxActions > 0 {
    22  		return c.HalfOpenMaxActions
    23  	}
    24  	return DefaultHalfOpenMaxActions
    25  }
    26  
    27  func (c Config) OpenExpiryIntervalOrDefault() time.Duration {
    28  	if c.OpenExpiryInterval > 0 {
    29  		return c.OpenExpiryInterval
    30  	}
    31  	return DefaultOpenExpiryInterval
    32  }
    33  
    34  func (c Config) ClosedFailureExpiryIntervalOrDefault() time.Duration {
    35  	if c.ClosedFailureExpiryInterval > 0 {
    36  		return c.ClosedFailureExpiryInterval
    37  	}
    38  	return DefaultClosedFailureExpiryInterval
    39  }