ErrLimited is returned in the request path when the rate limiter is triggered and the request is rejected.
var ErrLimited = errors.New("rate limit exceeded")
func NewDelayingLimiter(limit Waiter) endpoint.Middleware
NewDelayingLimiter returns an endpoint.Middleware that acts as a request throttler. Requests that would exceed the maximum request rate are delayed via the Waiter function
func NewErroringLimiter(limit Allower) endpoint.Middleware
NewErroringLimiter returns an endpoint.Middleware that acts as a rate limiter. Requests that would exceed the maximum request rate are simply rejected with an error.
Allower dictates whether or not a request is acceptable to run. The Limiter from "golang.org/x/time/rate" already implements this interface, one is able to use that in NewErroringLimiter without any modifications.
type Allower interface { Allow() bool }
AllowerFunc is an adapter that lets a function operate as if it implements Allower
type AllowerFunc func() bool
func (f AllowerFunc) Allow() bool
Allow makes the adapter implement Allower
Waiter dictates how long a request must be delayed. The Limiter from "golang.org/x/time/rate" already implements this interface, one is able to use that in NewDelayingLimiter without any modifications.
type Waiter interface { Wait(ctx context.Context) error }
WaiterFunc is an adapter that lets a function operate as if it implements Waiter
type WaiterFunc func(ctx context.Context) error
func (f WaiterFunc) Wait(ctx context.Context) error
Wait makes the adapter implement Waiter