Versions in this module Expand all Collapse all v0 v0.1.0 Aug 4, 2025 Changes in this version + var ErrCircuitOpen = errors.New("circuit breaker is open") + var ErrContextDeadline = errors.New("context deadline exceeded") + var ErrInvalidConfig = errors.New("invalid pool configuration") + var ErrPoolClosed = errors.New("pool is closed") + var ErrPoolExhausted = errors.New("pool exhausted") + var ErrTooManyRequests = errors.New("too many requests in half-open state") + type CircuitBreaker struct + func NewCircuitBreaker(config CircuitBreakerConfig) *CircuitBreaker + func (cb *CircuitBreaker) Execute(ctx context.Context, fn func(context.Context) error) error + func (cb *CircuitBreaker) ExecuteWithFallback(ctx context.Context, fn func(context.Context) error, ...) error + func (cb *CircuitBreaker) GetState() State + func (cb *CircuitBreaker) GetStats() CircuitBreakerStats + func (cb *CircuitBreaker) Reset() + type CircuitBreakerConfig struct + FailureThreshold int + HalfOpenMaxRequests int + OnStateChange func(from, to State) + OpenDuration time.Duration + SuccessThreshold int + Timeout time.Duration + func DefaultCircuitBreakerConfig() CircuitBreakerConfig + type CircuitBreakerStats struct + ConsecutiveFailures int64 + ConsecutiveSuccesses int64 + LastFailureTime time.Time + LastStateChange time.Time + State string + TotalCircuitOpens int64 + TotalFailures int64 + TotalRequests int64 + TotalSuccesses int64 + TotalTimeouts int64 + type Config struct + AcquireTimeout time.Duration + Factory Factory + HealthCheckInterval time.Duration + MaxIdleTime time.Duration + MaxLifetime time.Duration + MaxSize int + MinSize int + func DefaultConfig() Config + type Connection interface + Close func() error + GetID func() string + IsValid func() bool + type Factory func(ctx context.Context) (Connection, error) + type Pool struct + func NewPool(config Config) (*Pool, error) + func (p *Pool) Acquire(ctx context.Context) (Connection, error) + func (p *Pool) Close() error + func (p *Pool) GetStats() Stats + type PoolWithCircuitBreaker struct + func NewPoolWithCircuitBreaker(poolConfig Config, cbConfig CircuitBreakerConfig) (*PoolWithCircuitBreaker, error) + func (pcb *PoolWithCircuitBreaker) Acquire(ctx context.Context) (Connection, error) + func (pcb *PoolWithCircuitBreaker) Close() error + func (pcb *PoolWithCircuitBreaker) GetCircuitBreakerStats() CircuitBreakerStats + func (pcb *PoolWithCircuitBreaker) GetPoolStats() Stats + type State int32 + const StateClosed + const StateHalfOpen + const StateOpen + func (s State) String() string + type Stats struct + Active int32 + Idle int32 + Size int32 + TotalAcquires int64 + TotalClosed int64 + TotalCreated int64 + TotalHealthCheckFailures int64 + TotalTimeouts int64