ratelimiter

package
v0.9.0 Latest Latest
Warning

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

Go to latest
Published: Jan 5, 2024 License: MIT Imports: 6 Imported by: 1

Documentation

Index

Constants

View Source
const DefaultLimitForPeriod int64 = 50
View Source
const DefaultLimitRefreshPeriod = time.Nanosecond * 500
View Source
const DefaultTimeoutDuration = time.Second * 5

Variables

This section is empty.

Functions

func DecorateConsumer

func DecorateConsumer[T any](limiter RateLimiter, fn func(T) error) func(T) error

func DecorateFunction

func DecorateFunction[T any, R any](limiter RateLimiter, fn func(T) (R, error)) func(T) (R, error)

func DecorateRunnable

func DecorateRunnable(limiter RateLimiter, fn func() error) func() error

func DecorateSupplier

func DecorateSupplier[T any](limiter RateLimiter, fn func() (T, error)) func() (T, error)

Types

type Config

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

func (*Config) String

func (config *Config) String() string

type ConfigBuilder

type ConfigBuilder func(*Config)

func WithLimitForPeriod

func WithLimitForPeriod(limitForPeriod int64) ConfigBuilder

func WithLimitRefreshPeriod

func WithLimitRefreshPeriod(limitRefreshPeriod time.Duration) ConfigBuilder

func WithTimeoutDuration

func WithTimeoutDuration(timeoutDuration time.Duration) ConfigBuilder

type Event

type Event interface {
	fmt.Stringer
	RateLimiterName() string
	CreationTime() time.Time
	EventType() EventType
}

type EventListener

type EventListener interface {
	OnSuccessFunc(func(SuccessEvent)) EventListener
	OnFailureFunc(func(FailureEvent)) EventListener
	DismissSuccessFunc(func(SuccessEvent)) EventListener
	DismissFailureFunc(func(FailureEvent)) EventListener

	OnSuccess(fn.Consumer[SuccessEvent]) EventListener
	OnFailure(fn.Consumer[FailureEvent]) EventListener
	DismissSuccess(fn.Consumer[SuccessEvent]) EventListener
	DismissFailure(fn.Consumer[FailureEvent]) EventListener
}

type EventType

type EventType string
const (
	SUCCESSFUL EventType = "SUCCESSFUL_ACQUIRE"
	FAILED     EventType = "FAILED_ACQUIRE"
)

type FailureEvent added in v0.4.1

type FailureEvent interface {
	Event
}

type Metrics

type Metrics interface {
	NumberOfWaitingThreads() int64
	AvailablePermissions() int64
}

type NotPermittedError

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

func (*NotPermittedError) Error

func (e *NotPermittedError) Error() string

type RateLimiter

type RateLimiter interface {
	Name() string
	Metrics() Metrics
	EventListener() EventListener
	AcquirePermission() error
}

func NewRateLimiter

func NewRateLimiter(name string, configs ...ConfigBuilder) RateLimiter

type SuccessEvent added in v0.4.1

type SuccessEvent interface {
	Event
}

Jump to

Keyboard shortcuts

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