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 }