x/limiter/rate/limiter.go
2022-09-14 20:00:35 +08:00

27 lines
437 B
Go

package rate
import (
"time"
limiter "github.com/go-gost/core/limiter/rate"
"golang.org/x/time/rate"
)
type rlimiter struct {
limiter *rate.Limiter
}
func NewLimiter(r float64, b int) limiter.Limiter {
return &rlimiter{
limiter: rate.NewLimiter(rate.Limit(r), b),
}
}
func (l *rlimiter) Allow(n int) bool {
return l.limiter.AllowN(time.Now(), n)
}
func (l *rlimiter) Limit() float64 {
return float64(l.limiter.Limit())
}