x/limiter/conn/generator.go
2022-09-14 00:15:19 +08:00

43 lines
709 B
Go

package conn
import (
limiter "github.com/go-gost/core/limiter/conn"
)
type ConnLimitGenerator interface {
Limiter() limiter.Limiter
}
type connLimitGenerator struct {
n int
}
func NewConnLimitGenerator(n int) ConnLimitGenerator {
return &connLimitGenerator{
n: n,
}
}
func (p *connLimitGenerator) Limiter() limiter.Limiter {
if p == nil || p.n <= 0 {
return nil
}
return NewLimiter(p.n)
}
type connLimitSingleGenerator struct {
limiter limiter.Limiter
}
func NewConnLimitSingleGenerator(n int) ConnLimitGenerator {
p := &connLimitSingleGenerator{}
if n > 0 {
p.limiter = NewLimiter(n)
}
return p
}
func (p *connLimitSingleGenerator) Limiter() limiter.Limiter {
return p.limiter
}