quotas

package
v1.15.0 Latest Latest
Warning

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

Go to latest
Published: Feb 9, 2022 License: MIT Imports: 9 Imported by: 2

Documentation

Overview

Package quotas is a generated GoMock package.

Package quotas is a generated GoMock package.

Package quotas is a generated GoMock package.

Index

Constants

View Source
const (
	InfDuration = rate.InfDuration
)

Variables

This section is empty.

Functions

This section is empty.

Types

type BurstFn added in v1.5.7

type BurstFn func() int

BurstFn returns an int as the burst / bucket size

type DynamicRateLimiterImpl added in v1.5.7

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

DynamicRateLimiterImpl implements a dynamic config wrapper around the rate limiter

func NewDefaultIncomingRateLimiter added in v1.14.0

func NewDefaultIncomingRateLimiter(
	rateFn RateFn,
) *DynamicRateLimiterImpl

NewDefaultIncomingRateLimiter returns a default rate limiter for incoming traffic

func NewDefaultOutgoingRateLimiter added in v1.14.0

func NewDefaultOutgoingRateLimiter(
	rateFn RateFn,
) *DynamicRateLimiterImpl

NewDefaultOutgoingRateLimiter returns a default rate limiter for outgoing traffic

func NewDynamicRateLimiter added in v0.7.0

func NewDynamicRateLimiter(
	rateBurstFn RateBurst,
	refreshInterval time.Duration,
) *DynamicRateLimiterImpl

NewDynamicRateLimiter returns a rate limiter which handles dynamic config

func (*DynamicRateLimiterImpl) Allow added in v1.5.7

func (d *DynamicRateLimiterImpl) Allow() bool

Allow immediately returns with true or false indicating if a rate limit token is available or not

func (*DynamicRateLimiterImpl) AllowN added in v1.5.7

func (d *DynamicRateLimiterImpl) AllowN(now time.Time, numToken int) bool

AllowN immediately returns with true or false indicating if n rate limit token is available or not

func (*DynamicRateLimiterImpl) Burst added in v1.5.7

func (d *DynamicRateLimiterImpl) Burst() int

Burst returns the burst for this rate limiter

func (*DynamicRateLimiterImpl) Rate added in v1.5.7

func (d *DynamicRateLimiterImpl) Rate() float64

Rate returns the rate per second for this rate limiter

func (*DynamicRateLimiterImpl) Reserve added in v1.5.7

func (d *DynamicRateLimiterImpl) Reserve() Reservation

Reserve reserves a rate limit token

func (*DynamicRateLimiterImpl) ReserveN added in v1.5.7

func (d *DynamicRateLimiterImpl) ReserveN(now time.Time, numToken int) Reservation

ReserveN reserves n rate limit token

func (*DynamicRateLimiterImpl) Wait added in v1.5.7

Wait waits up till deadline for a rate limit token

func (*DynamicRateLimiterImpl) WaitN added in v1.5.7

func (d *DynamicRateLimiterImpl) WaitN(ctx context.Context, numToken int) error

WaitN waits up till deadline for n rate limit token

type MockRateLimiter added in v1.5.7

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

MockRateLimiter is a mock of RateLimiter interface.

func NewMockRateLimiter added in v1.5.7

func NewMockRateLimiter(ctrl *gomock.Controller) *MockRateLimiter

NewMockRateLimiter creates a new mock instance.

func (*MockRateLimiter) Allow added in v1.5.7

func (m *MockRateLimiter) Allow() bool

Allow mocks base method.

func (*MockRateLimiter) AllowN added in v1.5.7

func (m *MockRateLimiter) AllowN(now time.Time, numToken int) bool

AllowN mocks base method.

func (*MockRateLimiter) Burst added in v1.5.7

func (m *MockRateLimiter) Burst() int

Burst mocks base method.

func (*MockRateLimiter) EXPECT added in v1.5.7

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockRateLimiter) Rate added in v1.5.7

func (m *MockRateLimiter) Rate() float64

Rate mocks base method.

func (*MockRateLimiter) Reserve added in v1.5.7

func (m *MockRateLimiter) Reserve() Reservation

Reserve mocks base method.

func (*MockRateLimiter) ReserveN added in v1.5.7

func (m *MockRateLimiter) ReserveN(now time.Time, numToken int) Reservation

ReserveN mocks base method.

func (*MockRateLimiter) Wait added in v1.5.7

func (m *MockRateLimiter) Wait(ctx context.Context) error

Wait mocks base method.

func (*MockRateLimiter) WaitN added in v1.5.7

func (m *MockRateLimiter) WaitN(ctx context.Context, numToken int) error

WaitN mocks base method.

type MockRateLimiterMockRecorder added in v1.5.7

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

MockRateLimiterMockRecorder is the mock recorder for MockRateLimiter.

func (*MockRateLimiterMockRecorder) Allow added in v1.5.7

Allow indicates an expected call of Allow.

func (*MockRateLimiterMockRecorder) AllowN added in v1.5.7

func (mr *MockRateLimiterMockRecorder) AllowN(now, numToken interface{}) *gomock.Call

AllowN indicates an expected call of AllowN.

func (*MockRateLimiterMockRecorder) Burst added in v1.5.7

Burst indicates an expected call of Burst.

func (*MockRateLimiterMockRecorder) Rate added in v1.5.7

Rate indicates an expected call of Rate.

func (*MockRateLimiterMockRecorder) Reserve added in v1.5.7

func (mr *MockRateLimiterMockRecorder) Reserve() *gomock.Call

Reserve indicates an expected call of Reserve.

func (*MockRateLimiterMockRecorder) ReserveN added in v1.5.7

func (mr *MockRateLimiterMockRecorder) ReserveN(now, numToken interface{}) *gomock.Call

ReserveN indicates an expected call of ReserveN.

func (*MockRateLimiterMockRecorder) Wait added in v1.5.7

func (mr *MockRateLimiterMockRecorder) Wait(ctx interface{}) *gomock.Call

Wait indicates an expected call of Wait.

func (*MockRateLimiterMockRecorder) WaitN added in v1.5.7

func (mr *MockRateLimiterMockRecorder) WaitN(ctx, numToken interface{}) *gomock.Call

WaitN indicates an expected call of WaitN.

type MockRequestRateLimiter added in v1.10.0

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

MockRequestRateLimiter is a mock of RequestRateLimiter interface.

func NewMockRequestRateLimiter added in v1.10.0

func NewMockRequestRateLimiter(ctrl *gomock.Controller) *MockRequestRateLimiter

NewMockRequestRateLimiter creates a new mock instance.

func (*MockRequestRateLimiter) Allow added in v1.10.0

func (m *MockRequestRateLimiter) Allow(now time.Time, request Request) bool

Allow mocks base method.

func (*MockRequestRateLimiter) EXPECT added in v1.10.0

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockRequestRateLimiter) Reserve added in v1.10.0

func (m *MockRequestRateLimiter) Reserve(now time.Time, request Request) Reservation

Reserve mocks base method.

func (*MockRequestRateLimiter) Wait added in v1.10.0

func (m *MockRequestRateLimiter) Wait(ctx context.Context, request Request) error

Wait mocks base method.

type MockRequestRateLimiterMockRecorder added in v1.10.0

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

MockRequestRateLimiterMockRecorder is the mock recorder for MockRequestRateLimiter.

func (*MockRequestRateLimiterMockRecorder) Allow added in v1.10.0

func (mr *MockRequestRateLimiterMockRecorder) Allow(now, request interface{}) *gomock.Call

Allow indicates an expected call of Allow.

func (*MockRequestRateLimiterMockRecorder) Reserve added in v1.10.0

func (mr *MockRequestRateLimiterMockRecorder) Reserve(now, request interface{}) *gomock.Call

Reserve indicates an expected call of Reserve.

func (*MockRequestRateLimiterMockRecorder) Wait added in v1.10.0

func (mr *MockRequestRateLimiterMockRecorder) Wait(ctx, request interface{}) *gomock.Call

Wait indicates an expected call of Wait.

type MockReservation added in v1.5.7

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

MockReservation is a mock of Reservation interface.

func NewMockReservation added in v1.5.7

func NewMockReservation(ctrl *gomock.Controller) *MockReservation

NewMockReservation creates a new mock instance.

func (*MockReservation) Cancel added in v1.5.7

func (m *MockReservation) Cancel()

Cancel mocks base method.

func (*MockReservation) CancelAt added in v1.5.7

func (m *MockReservation) CancelAt(now time.Time)

CancelAt mocks base method.

func (*MockReservation) Delay added in v1.5.7

func (m *MockReservation) Delay() time.Duration

Delay mocks base method.

func (*MockReservation) DelayFrom added in v1.5.7

func (m *MockReservation) DelayFrom(now time.Time) time.Duration

DelayFrom mocks base method.

func (*MockReservation) EXPECT added in v1.5.7

EXPECT returns an object that allows the caller to indicate expected use.

func (*MockReservation) OK added in v1.5.7

func (m *MockReservation) OK() bool

OK mocks base method.

type MockReservationMockRecorder added in v1.5.7

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

MockReservationMockRecorder is the mock recorder for MockReservation.

func (*MockReservationMockRecorder) Cancel added in v1.5.7

func (mr *MockReservationMockRecorder) Cancel() *gomock.Call

Cancel indicates an expected call of Cancel.

func (*MockReservationMockRecorder) CancelAt added in v1.5.7

func (mr *MockReservationMockRecorder) CancelAt(now interface{}) *gomock.Call

CancelAt indicates an expected call of CancelAt.

func (*MockReservationMockRecorder) Delay added in v1.5.7

Delay indicates an expected call of Delay.

func (*MockReservationMockRecorder) DelayFrom added in v1.5.7

func (mr *MockReservationMockRecorder) DelayFrom(now interface{}) *gomock.Call

DelayFrom indicates an expected call of DelayFrom.

func (*MockReservationMockRecorder) OK added in v1.5.7

OK indicates an expected call of OK.

type MultiRateLimiterImpl added in v1.10.0

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

MultiRateLimiterImpl is a wrapper around the limiter interface

func NewMultiRateLimiter added in v1.10.0

func NewMultiRateLimiter(
	rateLimiters []RateLimiter,
) *MultiRateLimiterImpl

NewMultiRateLimiter returns a new rate limiter that have multiple stage

func (*MultiRateLimiterImpl) Allow added in v1.10.0

func (rl *MultiRateLimiterImpl) Allow() bool

Allow immediately returns with true or false indicating if a rate limit token is available or not

func (*MultiRateLimiterImpl) AllowN added in v1.10.0

func (rl *MultiRateLimiterImpl) AllowN(now time.Time, numToken int) bool

AllowN immediately returns with true or false indicating if n rate limit token is available or not

func (*MultiRateLimiterImpl) Burst added in v1.10.0

func (rl *MultiRateLimiterImpl) Burst() int

Burst returns the burst for this rate limiter

func (*MultiRateLimiterImpl) Rate added in v1.10.0

func (rl *MultiRateLimiterImpl) Rate() float64

Rate returns the rate per second for this rate limiter

func (*MultiRateLimiterImpl) Reserve added in v1.10.0

func (rl *MultiRateLimiterImpl) Reserve() Reservation

Reserve returns a Reservation that indicates how long the caller must wait before event happen.

func (*MultiRateLimiterImpl) ReserveN added in v1.10.0

func (rl *MultiRateLimiterImpl) ReserveN(now time.Time, numToken int) Reservation

ReserveN returns a Reservation that indicates how long the caller must wait before event happen.

func (*MultiRateLimiterImpl) Wait added in v1.10.0

func (rl *MultiRateLimiterImpl) Wait(ctx context.Context) error

Wait waits up till deadline for a rate limit token

func (*MultiRateLimiterImpl) WaitN added in v1.10.0

func (rl *MultiRateLimiterImpl) WaitN(ctx context.Context, numToken int) error

WaitN waits up till deadline for n rate limit token

type MultiReservationImpl added in v1.10.0

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

func NewMultiReservation added in v1.10.0

func NewMultiReservation(
	ok bool,
	reservations []Reservation,
) *MultiReservationImpl

func (*MultiReservationImpl) Cancel added in v1.10.0

func (r *MultiReservationImpl) Cancel()

Cancel indicates that the reservation holder will not perform the reserved action and reverses the effects of this Reservation on the rate limit as much as possible

func (*MultiReservationImpl) CancelAt added in v1.10.0

func (r *MultiReservationImpl) CancelAt(now time.Time)

CancelAt indicates that the reservation holder will not perform the reserved action and reverses the effects of this Reservation on the rate limit as much as possible

func (*MultiReservationImpl) Delay added in v1.10.0

func (r *MultiReservationImpl) Delay() time.Duration

Delay returns the duration for which the reservation holder must wait before taking the reserved action. Zero duration means act immediately.

func (*MultiReservationImpl) DelayFrom added in v1.10.0

func (r *MultiReservationImpl) DelayFrom(now time.Time) time.Duration

DelayFrom returns the duration for which the reservation holder must wait before taking the reserved action. Zero duration means act immediately.

func (*MultiReservationImpl) OK added in v1.10.0

func (r *MultiReservationImpl) OK() bool

OK returns whether the limiter can provide the requested number of tokens

type MutableRateBurst added in v1.14.0

type MutableRateBurst interface {
	SetRate(rate float64)
	SetBurst(burst int)
	RateBurst
}

type MutableRateBurstImpl added in v1.14.0

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

MutableRateBurstImpl stores the dynamic rate & burst for rate limiter

func NewMutableRateBurst added in v1.14.0

func NewMutableRateBurst(
	rate float64,
	burst int,
) *MutableRateBurstImpl

func (*MutableRateBurstImpl) Burst added in v1.14.0

func (d *MutableRateBurstImpl) Burst() int

func (*MutableRateBurstImpl) Rate added in v1.14.0

func (d *MutableRateBurstImpl) Rate() float64

func (*MutableRateBurstImpl) SetBurst added in v1.14.0

func (d *MutableRateBurstImpl) SetBurst(burst int)

func (*MutableRateBurstImpl) SetRate added in v1.14.0

func (d *MutableRateBurstImpl) SetRate(rate float64)

type NamespaceRateLimiterImpl added in v1.5.7

type NamespaceRateLimiterImpl struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

NamespaceRateLimiterImpl is a rate limiter special built for multi-tenancy

func NewNamespaceRateLimiter added in v1.5.7

func NewNamespaceRateLimiter(
	namespaceRateLimiterFn RequestRateLimiterFn,
) *NamespaceRateLimiterImpl

func (*NamespaceRateLimiterImpl) Allow added in v1.5.7

func (r *NamespaceRateLimiterImpl) Allow(
	now time.Time,
	request Request,
) bool

Allow attempts to allow a request to go through. The method returns immediately with a true or false indicating if the request can make progress

func (*NamespaceRateLimiterImpl) Reserve added in v1.5.7

func (r *NamespaceRateLimiterImpl) Reserve(
	now time.Time,
	request Request,
) Reservation

Reserve returns a Reservation that indicates how long the caller must wait before event happen.

func (*NamespaceRateLimiterImpl) Wait added in v1.5.7

func (r *NamespaceRateLimiterImpl) Wait(
	ctx context.Context,
	request Request,
) error

Wait waits till the deadline for a rate limit token to allow the request to go through.

type NoopReservationImpl added in v1.10.0

type NoopReservationImpl struct {
}

func NewNoopReservation added in v1.10.0

func NewNoopReservation() *NoopReservationImpl

func (*NoopReservationImpl) Cancel added in v1.10.0

func (r *NoopReservationImpl) Cancel()

Cancel indicates that the reservation holder will not perform the reserved action and reverses the effects of this Reservation on the rate limit as much as possible

func (*NoopReservationImpl) CancelAt added in v1.10.0

func (r *NoopReservationImpl) CancelAt(_ time.Time)

CancelAt indicates that the reservation holder will not perform the reserved action and reverses the effects of this Reservation on the rate limit as much as possible

func (*NoopReservationImpl) Delay added in v1.10.0

func (r *NoopReservationImpl) Delay() time.Duration

Delay returns the duration for which the reservation holder must wait before taking the reserved action. Zero duration means act immediately.

func (*NoopReservationImpl) DelayFrom added in v1.10.0

func (r *NoopReservationImpl) DelayFrom(_ time.Time) time.Duration

DelayFrom returns the duration for which the reservation holder must wait before taking the reserved action. Zero duration means act immediately.

func (*NoopReservationImpl) OK added in v1.10.0

func (r *NoopReservationImpl) OK() bool

OK returns whether the limiter can provide the requested number of tokens

type PriorityRateLimiterImpl added in v1.10.0

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

PriorityRateLimiterImpl is a wrapper around the golang rate limiter

func NewPriorityRateLimiter added in v1.10.0

func NewPriorityRateLimiter(
	apiToPriority map[string]int,
	priorityToRateLimiters map[int]RateLimiter,
) *PriorityRateLimiterImpl

NewPriorityRateLimiter returns a new rate limiter that can handle dynamic configuration updates

func (*PriorityRateLimiterImpl) Allow added in v1.10.0

func (p *PriorityRateLimiterImpl) Allow(
	now time.Time,
	request Request,
) bool

func (*PriorityRateLimiterImpl) Reserve added in v1.10.0

func (p *PriorityRateLimiterImpl) Reserve(
	now time.Time,
	request Request,
) Reservation

func (*PriorityRateLimiterImpl) Wait added in v1.10.0

func (p *PriorityRateLimiterImpl) Wait(
	ctx context.Context,
	request Request,
) error

type PriorityReservationImpl added in v1.10.0

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

func NewPriorityReservation added in v1.10.0

func NewPriorityReservation(
	decidingReservation Reservation,
	otherReservations []Reservation,
) *PriorityReservationImpl

func (*PriorityReservationImpl) Cancel added in v1.10.0

func (r *PriorityReservationImpl) Cancel()

Cancel indicates that the reservation holder will not perform the reserved action and reverses the effects of this Reservation on the rate limit as much as possible

func (*PriorityReservationImpl) CancelAt added in v1.10.0

func (r *PriorityReservationImpl) CancelAt(now time.Time)

CancelAt indicates that the reservation holder will not perform the reserved action and reverses the effects of this Reservation on the rate limit as much as possible

func (*PriorityReservationImpl) Delay added in v1.10.0

Delay returns the duration for which the reservation holder must wait before taking the reserved action. Zero duration means act immediately.

func (*PriorityReservationImpl) DelayFrom added in v1.10.0

func (r *PriorityReservationImpl) DelayFrom(now time.Time) time.Duration

DelayFrom returns the duration for which the reservation holder must wait before taking the reserved action. Zero duration means act immediately.

func (*PriorityReservationImpl) OK added in v1.10.0

func (r *PriorityReservationImpl) OK() bool

OK returns whether the limiter can provide the requested number of tokens

type RateBurst added in v1.14.0

type RateBurst interface {
	Rate() float64
	Burst() int
}

RateBurst returns rate & burst for rate limiter

type RateBurstImpl added in v1.14.0

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

func NewDefaultIncomingRateBurst added in v1.14.0

func NewDefaultIncomingRateBurst(
	rateFn RateFn,
) *RateBurstImpl

func NewDefaultOutgoingRateBurst added in v1.14.0

func NewDefaultOutgoingRateBurst(
	rateFn RateFn,
) *RateBurstImpl

func NewRateBurst added in v1.14.0

func NewRateBurst(
	rateFn RateFn,
	burstFn BurstFn,
) *RateBurstImpl

func (*RateBurstImpl) Burst added in v1.14.0

func (d *RateBurstImpl) Burst() int

func (*RateBurstImpl) Rate added in v1.14.0

func (d *RateBurstImpl) Rate() float64

type RateFn added in v1.5.7

type RateFn func() float64

RateFn returns a float64 as the RPS

type RateLimiter added in v0.7.0

type RateLimiter interface {
	// Allow attempts to allow a request to go through. The method returns
	// immediately with a true or false indicating if the request can make
	// progress
	Allow() bool

	// AllowN attempts to allow a request to go through. The method returns
	// immediately with a true or false indicating if the request can make
	// progress
	AllowN(now time.Time, numToken int) bool

	// Reserve returns a Reservation that indicates how long the caller
	// must wait before event happen.
	Reserve() Reservation

	// ReserveN returns a Reservation that indicates how long the caller
	// must wait before event happen.
	ReserveN(now time.Time, numToken int) Reservation

	// Wait waits till the deadline for a rate limit token to allow the request
	// to go through.
	Wait(ctx context.Context) error

	// WaitN waits till the deadline for n rate limit token to allow the request
	// to go through.
	WaitN(ctx context.Context, numToken int) error

	// Rate returns the rate per second for this rate limiter
	Rate() float64

	// Burst returns the burst for this rate limiter
	Burst() int
}

RateLimiter corresponds to basic rate limiting functionality.

type RateLimiterImpl added in v1.5.7

type RateLimiterImpl struct {
	sync.RWMutex
	// contains filtered or unexported fields
}

RateLimiterImpl is a wrapper around the golang rate limiter

func NewRateLimiter added in v0.7.0

func NewRateLimiter(newRate float64, newBurst int) *RateLimiterImpl

NewRateLimiter returns a new rate limiter that can handle dynamic configuration updates

func (*RateLimiterImpl) Allow added in v1.5.7

func (rl *RateLimiterImpl) Allow() bool

Allow immediately returns with true or false indicating if a rate limit token is available or not

func (*RateLimiterImpl) AllowN added in v1.5.7

func (rl *RateLimiterImpl) AllowN(now time.Time, numToken int) bool

AllowN immediately returns with true or false indicating if n rate limit token is available or not

func (*RateLimiterImpl) Burst added in v1.5.7

func (rl *RateLimiterImpl) Burst() int

Burst returns the burst for this rate limiter

func (*RateLimiterImpl) Rate added in v1.5.7

func (rl *RateLimiterImpl) Rate() float64

Rate returns the rate per second for this rate limiter

func (*RateLimiterImpl) Reserve added in v1.5.7

func (rl *RateLimiterImpl) Reserve() Reservation

Reserve reserves a rate limit token

func (*RateLimiterImpl) ReserveN added in v1.5.7

func (rl *RateLimiterImpl) ReserveN(now time.Time, numToken int) Reservation

ReserveN reserves n rate limit token

func (*RateLimiterImpl) SetBurst added in v1.5.7

func (rl *RateLimiterImpl) SetBurst(burst int)

SetBurst set the burst of the rate limiter

func (*RateLimiterImpl) SetRate added in v1.5.7

func (rl *RateLimiterImpl) SetRate(rate float64)

SetRate set the rate of the rate limiter

func (*RateLimiterImpl) SetRateBurst added in v1.5.7

func (rl *RateLimiterImpl) SetRateBurst(rate float64, burst int)

SetRateBurst set the rate & burst of the rate limiter

func (*RateLimiterImpl) Wait added in v1.5.7

func (rl *RateLimiterImpl) Wait(ctx context.Context) error

Wait waits up till deadline for a rate limit token

func (*RateLimiterImpl) WaitN added in v1.5.7

func (rl *RateLimiterImpl) WaitN(ctx context.Context, numToken int) error

WaitN waits up till deadline for n rate limit token

type Request added in v1.10.0

type Request struct {
	API    string
	Token  int
	Caller string
}

func NewRequest added in v1.10.0

func NewRequest(
	api string,
	token int,
	caller string,
) Request

type RequestRateLimiter added in v1.10.0

type RequestRateLimiter interface {
	// Allow attempts to allow a request to go through. The method returns
	// immediately with a true or false indicating if the request can make
	// progress
	Allow(now time.Time, request Request) bool

	// Reserve returns a Reservation that indicates how long the caller
	// must wait before event happen.
	Reserve(now time.Time, request Request) Reservation

	// Wait waits till the deadline for a rate limit token to allow the request
	// to go through.
	Wait(ctx context.Context, request Request) error
}

RequestRateLimiter corresponds to basic rate limiting functionality.

type RequestRateLimiterFn added in v1.10.0

type RequestRateLimiterFn func(req Request) RequestRateLimiter

RequestRateLimiterFn returns generate a namespace specific rate limiter

type Reservation added in v1.5.7

type Reservation interface {
	// OK returns whether the limiter can provide the requested number of tokens
	OK() bool

	// Cancel indicates that the reservation holder will not perform the reserved action
	// and reverses the effects of this Reservation on the rate limit as much as possible
	Cancel()

	// CancelAt indicates that the reservation holder will not perform the reserved action
	// and reverses the effects of this Reservation on the rate limit as much as possible
	CancelAt(now time.Time)

	// Delay returns the duration for which the reservation holder must wait
	// before taking the reserved action.  Zero duration means act immediately.
	Delay() time.Duration

	// DelayFrom returns the duration for which the reservation holder must wait
	// before taking the reserved action.  Zero duration means act immediately.
	DelayFrom(now time.Time) time.Duration
}

Reservation holds information about events that are permitted by a Limiter to happen after a delay

type RoutingRateLimiterImpl added in v1.10.0

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

RoutingRateLimiterImpl is a rate limiter special built for multi-tenancy

func NewRoutingRateLimiter added in v1.10.0

func NewRoutingRateLimiter(
	apiToRateLimiter map[string]RequestRateLimiter,
) *RoutingRateLimiterImpl

func (*RoutingRateLimiterImpl) Allow added in v1.10.0

func (r *RoutingRateLimiterImpl) Allow(
	now time.Time,
	request Request,
) bool

Allow attempts to allow a request to go through. The method returns immediately with a true or false indicating if the request can make progress

func (*RoutingRateLimiterImpl) Reserve added in v1.10.0

func (r *RoutingRateLimiterImpl) Reserve(
	now time.Time,
	request Request,
) Reservation

Reserve returns a Reservation that indicates how long the caller must wait before event happen.

func (*RoutingRateLimiterImpl) Wait added in v1.10.0

func (r *RoutingRateLimiterImpl) Wait(
	ctx context.Context,
	request Request,
) error

Wait waits till the deadline for a rate limit token to allow the request to go through.

Jump to

Keyboard shortcuts

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