ratelimiting

package
v0.13.0 Latest Latest
Warning

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

Go to latest
Published: Jan 15, 2024 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type OptionsCoalescing

type OptionsCoalescing struct {
	// InitialDelay is the initial delay for the rate limiter. The rate limiter
	// will not delay events less than the initial delay.
	// Defaults to 500ms.
	InitialDelay *time.Duration

	// MaxDelay is the maximum delay for the rate limiter. The rate limiter will
	// not delay events longer than the max delay.
	// Defaults to 5s.
	MaxDelay *time.Duration

	// MaxPendingEvents is the maximum number of events that can pending on a
	// rate limiter, before it fires an event anyway. Useful to prevent a rate
	// limiter never firing events in a high throughput scenario.
	// Defaults to unlimited.
	MaxPendingEvents *int
}

OptionsCoalescing configures a Coalescing RateLimiter.

type RateLimiter

type RateLimiter interface {
	// Run starts the rate limiter. The given channel will have events sent to
	// it, according to the rate limited parameters.
	Run(ctx context.Context, eventCh chan<- struct{}) error

	// Add adds a new event to the rate limiter.
	Add()

	// Close closes the rate limiter and waits for all resources to be released.
	Close()
}

RateLimiter is the interface for rate limiting events.

func NewCoalescing

func NewCoalescing(opts OptionsCoalescing) (RateLimiter, error)

Jump to

Keyboard shortcuts

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