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 ¶
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.