Documentation
¶
Overview ¶
Package ratelimit implements a tg.Invoker that limits request rate.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Middleware ¶
func Middleware(lim *rate.Limiter, opts ...MiddlewareOption) middleware.Middleware
Middleware returns a new RateLimiter middleware constructor.
Types ¶
type MiddlewareOption ¶
type MiddlewareOption func(r *RateLimiter) *RateLimiter
MiddlewareOption configures new RateLimiter in middleware constructor.
type RateLimiter ¶
type RateLimiter struct {
// contains filtered or unexported fields
}
RateLimiter is a tg.Invoker that throttles RPC calls on underlying invoker.
Example ¶
package main
import (
"time"
"golang.org/x/time/rate"
"github.com/gotd/td/middleware/ratelimit"
"github.com/gotd/td/tg"
)
func main() {
var invoker tg.Invoker // e.g. *telegram.Client
limiter := ratelimit.NewRateLimiter(invoker,
rate.NewLimiter(rate.Every(100*time.Millisecond), 1),
)
tg.NewClient(limiter)
}
func NewRateLimiter ¶
func NewRateLimiter(invoker tg.Invoker, lim *rate.Limiter) *RateLimiter
NewRateLimiter returns a new invoker rate limiter using lim.
func (*RateLimiter) WithClock ¶
func (l *RateLimiter) WithClock(c clock.Clock) *RateLimiter
WithClock sets clock to use. Default is to use system clock.
Click to show internal directories.
Click to hide internal directories.