ratelimiter

package module
v0.0.0-...-771296d Latest Latest
Warning

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

Go to latest
Published: Apr 10, 2014 License: MIT Imports: 4 Imported by: 0

README

ratelimiter

Rate limiting library written in Go, using redis as it's backend.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type LimitState

type LimitState struct {
	Resource      []string
	RPILimit      int64
	ConsumedSlots int64
	LastReserved  time.Time
	FirstReserved time.Time
}

type RateLimiter

type RateLimiter struct {
	Interval time.Duration
	// contains filtered or unexported fields
}

func NewRateLimiter

func NewRateLimiter(server string, password string) *RateLimiter

Create new RateLimiter

server: host:port of server
password: "" if auth is not required

func (*RateLimiter) Check

func (self *RateLimiter) Check()

func (*RateLimiter) Consume

func (self *RateLimiter) Consume(resource []string, timeout time.Duration) (ok bool, err error)

func (*RateLimiter) ResetResource

func (self *RateLimiter) ResetResource(resource []string)

func (*RateLimiter) SetLimit

func (self *RateLimiter) SetLimit(resource []string, rps int64)

type RateLimiterBackend

type RateLimiterBackend interface {
	GetState([]string, time.Time) (LimitState, error)
	SetLimit([]string, int64)
	ResetResource([]string)
	Reserve([]string, time.Time)
	Check()
}

type RedisBackend

type RedisBackend struct {
	Interval       time.Duration
	ExpirationTime time.Duration
	// contains filtered or unexported fields
}

Backend: redis

func NewRedisBackend

func NewRedisBackend(server string, password string, interval time.Duration) *RedisBackend

func (*RedisBackend) Check

func (self *RedisBackend) Check()

func (*RedisBackend) GetState

func (self *RedisBackend) GetState(resource []string, now time.Time) (LimitState, error)

func (*RedisBackend) Reserve

func (self *RedisBackend) Reserve(resource []string, slot time.Time)

func (*RedisBackend) ResetResource

func (self *RedisBackend) ResetResource(resource []string)

func (*RedisBackend) SetLimit

func (self *RedisBackend) SetLimit(resource []string, rps int64)

Jump to

Keyboard shortcuts

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