add conn limiter

This commit is contained in:
ginuerzh
2022-09-14 00:15:19 +08:00
parent 999707db19
commit 91c12882f5
48 changed files with 1041 additions and 244 deletions

View File

@ -0,0 +1,30 @@
package traffic
import (
"context"
limiter "github.com/go-gost/core/limiter/traffic"
"golang.org/x/time/rate"
)
type llimiter struct {
limiter *rate.Limiter
}
func NewLimiter(r int) limiter.Limiter {
return &llimiter{
limiter: rate.NewLimiter(rate.Limit(r), r),
}
}
func (l *llimiter) Wait(ctx context.Context, n int) int {
if l.limiter.Burst() < n {
n = l.limiter.Burst()
}
l.limiter.WaitN(ctx, n)
return n
}
func (l *llimiter) Limit() int {
return l.limiter.Burst()
}