Files
zeekayandHanzo Dev a5c5cc019e Go 1.27.1, and the code it can say more simply
Modules declare go 1.27.1 and the build images follow. go fix applied the
modernizers; omitzero is not applied, since it changes what the JSON says.

Co-authored-by: Hanzo Dev <[email protected]>
2026-09-16 22:42:15 -07:00

36 lines
1.2 KiB
Go

package krakendrate
import (
"context"
)
// NewMemoryStore returns a LimiterStore using the memory backend
//
// Deprecated: Use NewLimiterStore instead
func NewMemoryStore(maxRate float64, capacity int) LimiterStore {
return NewLimiterStore(maxRate, capacity, DefaultShardedMemoryBackend(context.Background()))
}
// NewLimiterStore returns a LimiterStore using the received backend for persistence
func NewLimiterStore(maxRate float64, capacity int, backend Backend) LimiterStore {
f := NewTokenBucketBuilder(maxRate, uint64(capacity), uint64(capacity), nil)
return func(t string) Limiter {
return backend.Load(t, f).(Limiter)
}
}
// LimiterBuilderFn defines the function that will be called when there
// is no entry in the backend for a given token.
type LimiterBuilderFn func() any
// NewLimiterFromBackendAndBuilder creates a LimiterStore that uses limiterBuilder to
// creat new token buckets.
func NewLimiterFromBackendAndBuilder(backend Backend, limiterBuilder LimiterBuilderFn) LimiterStore {
if limiterBuilder == nil {
limiterBuilder = NewTokenBucketBuilder(1, 1, 1, nil)
}
return func(strToken string) Limiter {
return backend.Load(strToken, limiterBuilder).(Limiter)
}
}