cb

package
v1.0.0-preview.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 18, 2021 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	StateOpen   = int32(0)
	StateClosed = int32(2)
)

Variables

View Source
var ErrCircuitOpen = errors.New("circuit open")

Functions

This section is empty.

Types

type CircuitBreaker

type CircuitBreaker struct {
	RetryPolicyFunc     RetryPolicyFunc
	StateChangeHandler  EventHandler
	MaxRetries          int
	ResetTimeout        time.Duration
	MaxFailureCount     int32
	CurrentFailureCount int32
	State               int32
}

func NewCircuitBreaker

func NewCircuitBreaker(fs ...CircuitBreakerOptionFunc) *CircuitBreaker

func (*CircuitBreaker) Try

func (cb *CircuitBreaker) Try(handler TryHandler) (interface{}, error)

func (*CircuitBreaker) TryContext

func (cb *CircuitBreaker) TryContext(ctx context.Context, handler TryHandler) (interface{}, error)

func (*CircuitBreaker) TryContextFuture

func (cb *CircuitBreaker) TryContextFuture(ctx context.Context, tryHandler TryHandler) Future

type CircuitBreakerOptionFunc

type CircuitBreakerOptionFunc func(opts *CircuitBreakerOptions) error

func MaxFailureCount

func MaxFailureCount(failureCount int) CircuitBreakerOptionFunc

func MaxRetries

func MaxRetries(retries int) CircuitBreakerOptionFunc

func ResetTimeout

func ResetTimeout(timeout time.Duration) CircuitBreakerOptionFunc

func RetryPolicy

func RetryPolicy(policyFunc RetryPolicyFunc) CircuitBreakerOptionFunc

func StateChangeHandler

func StateChangeHandler(handler EventHandler) CircuitBreakerOptionFunc

type CircuitBreakerOptions

type CircuitBreakerOptions struct {
	RetryPolicyFunc    RetryPolicyFunc
	StateChangeHandler EventHandler
	MaxRetries         int
	ResetTimeout       time.Duration
	MaxFailureCount    int32
}

func DefaultCircuitBreakerOptions

func DefaultCircuitBreakerOptions() *CircuitBreakerOptions

func NewCircuitBreakerOptions

func NewCircuitBreakerOptions(fs ...CircuitBreakerOptionFunc) (*CircuitBreakerOptions, error)

type EventHandler

type EventHandler func(state int32)

type Future

type Future interface {
	// Result blocks until the future is complete
	Result() (maybeResult interface{}, err error)
}

Future holds a value computed in the future Futures are not re-usable

type FutureImpl

type FutureImpl struct {
	// contains filtered or unexported fields
}

func NewFailedFuture

func NewFailedFuture(err error) *FutureImpl

func NewFutureImpl

func NewFutureImpl() *FutureImpl

func NewSucceededFuture

func NewSucceededFuture(result interface{}) *FutureImpl

func (FutureImpl) Result

func (f FutureImpl) Result() (interface{}, error)

type NonRetryableError

type NonRetryableError struct {
	Err error
}

func WrapNonRetryableError

func WrapNonRetryableError(err error) *NonRetryableError

func (NonRetryableError) Error

func (n NonRetryableError) Error() string

func (NonRetryableError) Is

func (e NonRetryableError) Is(target error) bool

type RetryPolicyFunc

type RetryPolicyFunc func(currentTry int) time.Duration

type TryHandler

type TryHandler func(ctx context.Context, attempt int) (interface{}, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL