Versions in this module Expand all Collapse all v1 v1.0.1 Oct 8, 2025 Changes in this version + var DefaultWindowBuckets = 10 + var DefaultWindowTime = time.Millisecond * 10000 + var ErrBreakerOpen = errors.New("breaker open") + var ErrBreakerTimeout = errors.New("breaker time out") + type Breaker struct + BackOff backoff.BackOff + Clock clock.Clock + ShouldTrip TripFunc + func NewBreaker() *Breaker + func NewBreakerWithOptions(options *Options) *Breaker + func NewConsecutiveBreaker(threshold int64) *Breaker + func NewRateBreaker(rate float64, minSamples int64) *Breaker + func NewThresholdBreaker(threshold int64) *Breaker + func (cb *Breaker) AddListener(listener chan ListenerEvent) + func (cb *Breaker) Break() + func (cb *Breaker) Call(circuit func() error, timeout time.Duration) error + func (cb *Breaker) CallContext(ctx context.Context, circuit func() error, timeout time.Duration) error + func (cb *Breaker) ConsecFailures() int64 + func (cb *Breaker) ErrorRate() float64 + func (cb *Breaker) Fail() + func (cb *Breaker) Failures() int64 + func (cb *Breaker) Ready() bool + func (cb *Breaker) RemoveListener(listener chan ListenerEvent) bool + func (cb *Breaker) Reset() + func (cb *Breaker) ResetCounters() + func (cb *Breaker) Subscribe() <-chan BreakerEvent + func (cb *Breaker) Success() + func (cb *Breaker) Successes() int64 + func (cb *Breaker) Trip() + func (cb *Breaker) Tripped() bool + type BreakerEvent int + const BreakerFail + const BreakerReady + const BreakerReset + const BreakerTripped + type HTTPClient struct + BreakerLookup func(*HTTPClient, interface{}) *Breaker + BreakerReset func() + BreakerTripped func() + Client *http.Client + Panel *Panel + func NewHTTPClient(timeout time.Duration, threshold int64, client *http.Client) *HTTPClient + func NewHTTPClientWithBreaker(breaker *Breaker, timeout time.Duration, client *http.Client) *HTTPClient + func NewHostBasedHTTPClient(timeout time.Duration, threshold int64, client *http.Client) *HTTPClient + func (c *HTTPClient) Do(req *http.Request) (*http.Response, error) + func (c *HTTPClient) Get(url string) (*http.Response, error) + func (c *HTTPClient) Head(url string) (*http.Response, error) + func (c *HTTPClient) Post(url string, bodyType string, body io.Reader) (*http.Response, error) + func (c *HTTPClient) PostForm(url string, data url.Values) (*http.Response, error) + type ListenerEvent struct + CB *Breaker + Event BreakerEvent + type Options struct + BackOff backoff.BackOff + Clock clock.Clock + ShouldTrip TripFunc + WindowBuckets int + WindowTime time.Duration + type Panel struct + Circuits map[string]*Breaker + StatsPrefixf string + Statter Statter + func NewPanel() *Panel + func (p *Panel) Add(name string, cb *Breaker) + func (p *Panel) Get(name string) (*Breaker, bool) + func (p *Panel) Subscribe() <-chan PanelEvent + type PanelEvent struct + Event BreakerEvent + Name string + type Statter interface + Counter func(sampleRate float32, bucket string, n ...int) + Gauge func(sampleRate float32, bucket string, value ...string) + Timing func(sampleRate float32, bucket string, d ...time.Duration) + type TripFunc func(*Breaker) bool + func ConsecutiveTripFunc(threshold int64) TripFunc + func RateTripFunc(rate float64, minSamples int64) TripFunc + func ThresholdTripFunc(threshold int64) TripFunc