ren

package module
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Oct 10, 2021 License: MIT Imports: 9 Imported by: 0

README

ren

忍,能也。从心、刃声。

GoDoc

wrapper for ulule/limiter to provide simple rate limiter for client-side app. inspired by kimsudo/wulimt.

Documentation

Overview

Package ren is a wrapper for ulule/limiter to provide simple rate limiter for client-side app.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ParseRate

func ParseRate(formatted string) (*limiter.Rate, error)

ParseRate parses formatted rate string (limit-period) like 1-10s (1 for every 10s), 60-m (60 per minute).

Types

type RateLimiter

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

RateLimiter represents an instance of rate limiter.

func Get

func Get(name string) *RateLimiter

Get returns a rate limiter instance by name, nil will be returned if not exists.

func GetOrNew

func GetOrNew(name string, periodSec, times int64) *RateLimiter

GetOrNew returns a rate limiter instance by name, or create a new one if not exists.

func GetOrNewFromFormatted

func GetOrNewFromFormatted(name, expr string) *RateLimiter

GetOrNewFromFormatted returns a rate limiter instance by name, or create a new one with formatted rate expression if not exists. It panics if fails to parse formatted rate string.

func (*RateLimiter) Estimate

func (rl *RateLimiter) Estimate() time.Duration

Estimate returns average waiting time of the rate limiter.

func (*RateLimiter) GetBufferRate

func (rl *RateLimiter) GetBufferRate() float64

GetBufferRate returns buffer rate of the rate limiter.

func (*RateLimiter) SetBufferRate

func (rl *RateLimiter) SetBufferRate(br float64)

SetBufferRate sets buffer rate of the rate limiter, value <= 0 will disable time buffer in WaitMore() as well.

func (RateLimiter) String

func (rl RateLimiter) String() string

func (*RateLimiter) Wait

func (rl *RateLimiter) Wait()

Wait blocks current goroutine to ensure the rate limit requirement is fulfilled.

func (*RateLimiter) WaitMore

func (rl *RateLimiter) WaitMore()

WaitMore blocks current goroutine to ensure the rate limiting requirement is fulfilled, and wait a little longer.

Jump to

Keyboard shortcuts

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