Documentation
¶
Overview ¶
Package quotas is a generated GoMock package.
Index ¶
- Constants
- type BurstFn
- type BurstKeyFn
- type DynamicBurst
- type DynamicBurstImpl
- type DynamicRate
- type DynamicRateImpl
- type DynamicRateLimiterImpl
- func (d *DynamicRateLimiterImpl) Allow() bool
- func (d *DynamicRateLimiterImpl) AllowN(now time.Time, numToken int) bool
- func (d *DynamicRateLimiterImpl) Burst() int
- func (d *DynamicRateLimiterImpl) Rate() float64
- func (d *DynamicRateLimiterImpl) Reserve() Reservation
- func (d *DynamicRateLimiterImpl) ReserveN(now time.Time, numToken int) Reservation
- func (d *DynamicRateLimiterImpl) Wait(ctx context.Context) error
- func (d *DynamicRateLimiterImpl) WaitN(ctx context.Context, numToken int) error
- type MockRateLimiter
- func (m *MockRateLimiter) Allow() bool
- func (m *MockRateLimiter) AllowN(now time.Time, numToken int) bool
- func (m *MockRateLimiter) Burst() int
- func (m *MockRateLimiter) EXPECT() *MockRateLimiterMockRecorder
- func (m *MockRateLimiter) Rate() float64
- func (m *MockRateLimiter) Reserve() Reservation
- func (m *MockRateLimiter) ReserveN(now time.Time, numToken int) Reservation
- func (m *MockRateLimiter) Wait(ctx context.Context) error
- func (m *MockRateLimiter) WaitN(ctx context.Context, numToken int) error
- type MockRateLimiterMockRecorder
- func (mr *MockRateLimiterMockRecorder) Allow() *gomock.Call
- func (mr *MockRateLimiterMockRecorder) AllowN(now, numToken interface{}) *gomock.Call
- func (mr *MockRateLimiterMockRecorder) Burst() *gomock.Call
- func (mr *MockRateLimiterMockRecorder) Rate() *gomock.Call
- func (mr *MockRateLimiterMockRecorder) Reserve() *gomock.Call
- func (mr *MockRateLimiterMockRecorder) ReserveN(now, numToken interface{}) *gomock.Call
- func (mr *MockRateLimiterMockRecorder) Wait(ctx interface{}) *gomock.Call
- func (mr *MockRateLimiterMockRecorder) WaitN(ctx, numToken interface{}) *gomock.Call
- type MockReservation
- type MockReservationMockRecorder
- func (mr *MockReservationMockRecorder) Cancel() *gomock.Call
- func (mr *MockReservationMockRecorder) CancelAt(now interface{}) *gomock.Call
- func (mr *MockReservationMockRecorder) Delay() *gomock.Call
- func (mr *MockReservationMockRecorder) DelayFrom(now interface{}) *gomock.Call
- func (mr *MockReservationMockRecorder) OK() *gomock.Call
- type MultiStageRateLimiterImpl
- func (rl *MultiStageRateLimiterImpl) Allow() bool
- func (rl *MultiStageRateLimiterImpl) AllowN(now time.Time, numToken int) bool
- func (rl *MultiStageRateLimiterImpl) Burst() int
- func (rl *MultiStageRateLimiterImpl) Rate() float64
- func (rl *MultiStageRateLimiterImpl) Reserve() Reservation
- func (rl *MultiStageRateLimiterImpl) ReserveN(now time.Time, numToken int) Reservation
- func (rl *MultiStageRateLimiterImpl) Wait(ctx context.Context) error
- func (rl *MultiStageRateLimiterImpl) WaitN(ctx context.Context, numToken int) error
- type MultiStageReservationImpl
- type NamespaceMultiStageRateLimiterImpl
- type NamespaceRateLimiter
- type NamespaceRateLimiterFn
- type RateFn
- type RateKeyFn
- type RateLimiter
- type RateLimiterImpl
- func (rl *RateLimiterImpl) Allow() bool
- func (rl *RateLimiterImpl) AllowN(now time.Time, numToken int) bool
- func (rl *RateLimiterImpl) Burst() int
- func (rl *RateLimiterImpl) Rate() float64
- func (rl *RateLimiterImpl) Reserve() Reservation
- func (rl *RateLimiterImpl) ReserveN(now time.Time, numToken int) Reservation
- func (rl *RateLimiterImpl) SetBurst(burst int)
- func (rl *RateLimiterImpl) SetRate(rate float64)
- func (rl *RateLimiterImpl) SetRateBurst(rate float64, burst int)
- func (rl *RateLimiterImpl) Wait(ctx context.Context) error
- func (rl *RateLimiterImpl) WaitN(ctx context.Context, numToken int) error
- type Reservation
Constants ¶
const (
InfDuration = rate.InfDuration
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BurstKeyFn ¶ added in v1.6.0
type BurstKeyFn func(key string) int
BurstKeyFn returns a int as the Burst for the given key
type DynamicBurst ¶ added in v1.5.7
type DynamicBurst interface {
Load() int
Store(burst int)
BurstFn() BurstFn
}
type DynamicBurstImpl ¶ added in v1.5.7
type DynamicBurstImpl struct {
// contains filtered or unexported fields
}
DynamicBurstImpl stores the dynamic burst for rate limiter
func NewDynamicBurst ¶ added in v1.5.7
func NewDynamicBurst(burst int) *DynamicBurstImpl
type DynamicRate ¶ added in v1.5.7
type DynamicRate interface {
Load() float64
Store(rate float64)
RateFn() RateFn
}
type DynamicRateImpl ¶ added in v1.5.7
type DynamicRateImpl struct {
// contains filtered or unexported fields
}
DynamicRateImpl stores the dynamic rate per second for rate limiter
func NewDynamicRate ¶ added in v1.5.7
func NewDynamicRate(rate float64) *DynamicRateImpl
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 NewDefaultIncomingDynamicRateLimiter ¶ added in v1.5.7
func NewDefaultIncomingDynamicRateLimiter(
rateFn RateFn,
) *DynamicRateLimiterImpl
NewDefaultIncomingDynamicRateLimiter returns a default rate limiter for incoming traffic
func NewDefaultOutgoingDynamicRateLimiter ¶ added in v1.5.7
func NewDefaultOutgoingDynamicRateLimiter(
rateFn RateFn,
) *DynamicRateLimiterImpl
NewDefaultOutgoingDynamicRateLimiter returns a default rate limiter for outgoing traffic
func NewDynamicRateLimiter ¶ added in v0.7.0
func NewDynamicRateLimiter(
rateFn RateFn,
burstFn BurstFn,
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
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
func (m *MockRateLimiter) EXPECT() *MockRateLimiterMockRecorder
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.
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
func (mr *MockRateLimiterMockRecorder) Allow() *gomock.Call
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
func (mr *MockRateLimiterMockRecorder) Burst() *gomock.Call
Burst indicates an expected call of Burst.
func (*MockRateLimiterMockRecorder) Rate ¶ added in v1.5.7
func (mr *MockRateLimiterMockRecorder) Rate() *gomock.Call
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.
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.
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
func (mr *MockReservationMockRecorder) Delay() *gomock.Call
Delay indicates an expected call of Delay.
type MultiStageRateLimiterImpl ¶ added in v1.5.7
type MultiStageRateLimiterImpl struct {
// contains filtered or unexported fields
}
MultiStageRateLimiterImpl is a wrapper around the limiter interface
func NewMultiStageRateLimiter ¶ added in v0.7.0
func NewMultiStageRateLimiter(
rateLimiters []RateLimiter,
) *MultiStageRateLimiterImpl
NewMultiStageRateLimiter returns a new rate limiter that have multiple stage
func (*MultiStageRateLimiterImpl) Allow ¶ added in v1.5.7
func (rl *MultiStageRateLimiterImpl) Allow() bool
Allow immediately returns with true or false indicating if a rate limit token is available or not
func (*MultiStageRateLimiterImpl) AllowN ¶ added in v1.5.7
func (rl *MultiStageRateLimiterImpl) 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 (*MultiStageRateLimiterImpl) Burst ¶ added in v1.5.7
func (rl *MultiStageRateLimiterImpl) Burst() int
Burst returns the burst for this rate limiter
func (*MultiStageRateLimiterImpl) Rate ¶ added in v1.5.7
func (rl *MultiStageRateLimiterImpl) Rate() float64
Rate returns the rate per second for this rate limiter
func (*MultiStageRateLimiterImpl) Reserve ¶ added in v1.5.7
func (rl *MultiStageRateLimiterImpl) Reserve() Reservation
Reserve returns a Reservation that indicates how long the caller must wait before event happen.
func (*MultiStageRateLimiterImpl) ReserveN ¶ added in v1.5.7
func (rl *MultiStageRateLimiterImpl) ReserveN(now time.Time, numToken int) Reservation
ReserveN returns a Reservation that indicates how long the caller must wait before event happen.
type MultiStageReservationImpl ¶ added in v1.5.7
type MultiStageReservationImpl struct {
// contains filtered or unexported fields
}
func NewMultiStageReservation ¶ added in v1.5.7
func NewMultiStageReservation(
ok bool,
reservations []Reservation,
) *MultiStageReservationImpl
func (*MultiStageReservationImpl) Cancel ¶ added in v1.5.7
func (r *MultiStageReservationImpl) 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 (*MultiStageReservationImpl) CancelAt ¶ added in v1.5.7
func (r *MultiStageReservationImpl) CancelAt(now time.Time)
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 (*MultiStageReservationImpl) Delay ¶ added in v1.5.7
func (r *MultiStageReservationImpl) Delay() time.Duration
Delay returns the duration for which the reservation holder must wait before taking the reserved action. Zero duration means act immediately.
type NamespaceMultiStageRateLimiterImpl ¶ added in v1.5.7
type NamespaceMultiStageRateLimiterImpl struct {
sync.RWMutex
// contains filtered or unexported fields
}
NamespaceMultiStageRateLimiterImpl is a multi stage rate limiter special built for multi-tenancy
func NewNamespaceMultiStageRateLimiter ¶ added in v1.5.7
func NewNamespaceMultiStageRateLimiter(
namespaceRateLimiterFn NamespaceRateLimiterFn,
sharedRateLimiters []RateLimiter,
) *NamespaceMultiStageRateLimiterImpl
func (*NamespaceMultiStageRateLimiterImpl) Allow ¶ added in v1.5.7
func (r *NamespaceMultiStageRateLimiterImpl) Allow(
namespaceID string,
) 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
type NamespaceRateLimiter ¶ added in v1.5.7
type NamespaceRateLimiter 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(namespaceID string) bool
// Reserve returns a Reservation that indicates how long the caller
// must wait before event happen.
Reserve(namespaceID string) Reservation
// Wait waits till the deadline for a rate limit token to allow the request
// to go through.
Wait(ctx context.Context, namespaceID string) error
}
NamespaceRateLimiter corresponds to basic rate limiting functionality.
type NamespaceRateLimiterFn ¶ added in v1.5.7
type NamespaceRateLimiterFn func(namespaceID string) RateLimiter
NamespaceRateLimiterFn returns generate a namespace specific rate limiter
type RateKeyFn ¶ added in v1.6.0
type RateKeyFn func(key string) float64
RateKeyFn returns a float64 as the Rate for the given key
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
// Wait 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)
Burst 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
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