rate_limiter

package
v0.0.0-...-44111aa Latest Latest
Warning

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

Go to latest
Published: May 3, 2015 License: BSD-3-Clause Imports: 3 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type MockRateLimiter

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

A mock rate limiter for external unittesting. The bucket is fill via the Tick call.

func NewMockRateLimiter

func NewMockRateLimiter() *MockRateLimiter

func (MockRateLimiter) MaxQuota

func (l MockRateLimiter) MaxQuota() float64

This returns the leaky bucket's maximum capacity.

func (MockRateLimiter) Quota

func (l MockRateLimiter) Quota() float64

This returns the current available quota.

func (MockRateLimiter) QuotaPerSec

func (l MockRateLimiter) QuotaPerSec() float64

This returns the leaky bucket's fill rate.

func (MockRateLimiter) SetMaxQuota

func (l MockRateLimiter) SetMaxQuota(q float64) error

This sets the leaky bucket's maximum capacity. The value must be non-negative.

func (*MockRateLimiter) SetQuota

func (l *MockRateLimiter) SetQuota(q float64)

func (MockRateLimiter) SetQuotaPerSec

func (l MockRateLimiter) SetQuotaPerSec(r float64) error

This sets the leaky bucket's fill rate. The value must be non-negative.

func (MockRateLimiter) Stop

func (l MockRateLimiter) Stop()

Stop the rate limiter.

func (MockRateLimiter) Throttle

func (l MockRateLimiter) Throttle(request float64) bool

This blocks until the request amount of resources is acquired. This returns false if the request can be satisfied immediately. Otherwise, this returns true.

NOTE: When maxQuota is zero, or when the rate limiter is stopped, this returns immediately.

func (*MockRateLimiter) Tick

func (l *MockRateLimiter) Tick()

type RateLimiter

type RateLimiter interface {
	// This returns the leaky bucket's maximum capacity.
	MaxQuota() float64

	// This sets the leaky bucket's maximum capacity.  The value must be
	// non-negative.
	SetMaxQuota(q float64) error

	// This returns the leaky bucket's fill rate.
	QuotaPerSec() float64

	// This sets the leaky bucket's fill rate.  The value must be non-negative.
	SetQuotaPerSec(r float64) error

	// This returns the current available quota.
	Quota() float64

	// This blocks until the request amount of resources is acquired.  This
	// returns false if the request can be satisfied immediately.  Otherwise, this
	// returns true.
	//
	// NOTE: When maxQuota is zero, or when the rate limiter is stopped,
	// this returns immediately.
	Throttle(request float64) bool

	// Stop the rate limiter.
	Stop()
}

Interface for a thread-safe leaky bucket rate limiter.

func NewRateLimiter

func NewRateLimiter(
	maxQuota float64,
	quotaPerSec float64) (
	RateLimiter,
	error)

Jump to

Keyboard shortcuts

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