resource

package
v1.2.1 Latest Latest
Warning

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

Go to latest
Published: Jul 1, 2025 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CircuitBreaker

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

CircuitBreaker protects resources from cascading failures

func NewCircuitBreaker

func NewCircuitBreaker(name string, maxFailures int, resetTimeout time.Duration, logger *slog.Logger) *CircuitBreaker

NewCircuitBreaker creates a new circuit breaker

func (*CircuitBreaker) Call

func (cb *CircuitBreaker) Call(ctx context.Context, fn func() error) error

Call executes the function with circuit breaker protection

func (*CircuitBreaker) GetState

func (cb *CircuitBreaker) GetState() CircuitState

GetState returns the current state

func (*CircuitBreaker) Reset

func (cb *CircuitBreaker) Reset()

Reset manually resets the circuit breaker

type CircuitState

type CircuitState int

CircuitState represents the state of a circuit breaker

const (
	// StateClosed allows requests to pass through
	StateClosed CircuitState = iota
	// StateOpen blocks all requests
	StateOpen
	// StateHalfOpen allows limited requests to test recovery
	StateHalfOpen
)

type Config

type Config struct {
	// Rate limiting
	RequestsPerSecond float64
	BurstSize         int

	// Concurrency
	MaxConcurrent int

	// Circuit breaker defaults
	MaxFailures  int
	ResetTimeout time.Duration
}

Config holds resource manager configuration

func DefaultConfig

func DefaultConfig() Config

DefaultConfig returns sensible defaults

type Manager

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

Manager handles resource management including rate limiting, connection pooling, and circuit breaking

func NewManager

func NewManager(config Config, logger *slog.Logger) *Manager

NewManager creates a new resource manager

func (*Manager) AcquireToken

func (m *Manager) AcquireToken(ctx context.Context) error

AcquireToken waits for rate limiter permission

func (*Manager) Execute

func (m *Manager) Execute(ctx context.Context, resourceName string, fn func() error) error

Execute runs a function with resource management

func (*Manager) GetStats

func (m *Manager) GetStats() Stats

GetStats returns current resource statistics

func (*Manager) HealthCheck

func (m *Manager) HealthCheck() error

HealthCheck performs a health check on resource manager

func (*Manager) ResetCircuitBreaker

func (m *Manager) ResetCircuitBreaker(resourceName string)

ResetCircuitBreaker manually resets a circuit breaker

func (*Manager) RestoreLimit

func (m *Manager) RestoreLimit(original float64)

RestoreLimit restores original rate limit

func (*Manager) Throttle

func (m *Manager) Throttle(factor float64)

Throttle temporarily reduces rate limit

type Stats

type Stats struct {
	ActiveRequests  int64
	TotalProcessed  int64
	TotalErrors     int64
	RateLimitTokens float64
	CircuitBreakers map[string]string
}

Stats holds resource manager statistics

Jump to

Keyboard shortcuts

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