27 lines
437 B
Go
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())
|
|
}
|