ratelimiter

package
v1.36.2 Latest Latest
Warning

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

Go to latest
Published: Sep 29, 2025 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrLimitExceeded = errors.New("not enough tokens")
)

Functions

This section is empty.

Types

type IndividualSerializer

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

Individual serializers do serialize each metric individually using the serializer's Serialize() function and add the resulting output to the buffer until the limit is reached. This only works for serializers NOT requiring the serialization of a batch as-a-whole.

func NewIndividualSerializer

func NewIndividualSerializer(s telegraf.Serializer) *IndividualSerializer

func (*IndividualSerializer) Serialize

func (s *IndividualSerializer) Serialize(metric telegraf.Metric, limit int64) ([]byte, error)

func (*IndividualSerializer) SerializeBatch

func (s *IndividualSerializer) SerializeBatch(metrics []telegraf.Metric, limit int64) ([]byte, error)

type RateLimitConfig

type RateLimitConfig struct {
	Limit  config.Size     `toml:"rate_limit"`
	Period config.Duration `toml:"rate_limit_period"`
}

func (*RateLimitConfig) CreateRateLimiter

func (cfg *RateLimitConfig) CreateRateLimiter() (*RateLimiter, error)

type RateLimiter

type RateLimiter struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func (*RateLimiter) Accept

func (r *RateLimiter) Accept(t time.Time, used int64)

func (*RateLimiter) Release added in v1.35.0

func (r *RateLimiter) Release()

func (*RateLimiter) Remaining

func (r *RateLimiter) Remaining(t time.Time) int64

func (*RateLimiter) Reserve added in v1.35.0

func (r *RateLimiter) Reserve(used int64)

func (*RateLimiter) Undo

func (r *RateLimiter) Undo(t time.Time, used int64)

type Serializer

type Serializer interface {
	Serialize(metric telegraf.Metric, limit int64) ([]byte, error)
	SerializeBatch(metrics []telegraf.Metric, limit int64) ([]byte, error)
}

Serializer interface abstracting the different implementations of a limited-size serializer

Jump to

Keyboard shortcuts

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