ratelimit

package
v0.41.1 Latest Latest
Warning

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

Go to latest
Published: May 23, 2021 License: MIT Imports: 8 Imported by: 0

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) InvokeRaw

func (l *RateLimiter) InvokeRaw(ctx context.Context, input bin.Encoder, output bin.Decoder) error

InvokeRaw implements tg.Invoker.

func (*RateLimiter) WithClock

func (l *RateLimiter) WithClock(c clock.Clock) *RateLimiter

WithClock sets clock to use. Default is to use system clock.

Jump to

Keyboard shortcuts

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