43 lines
709 B
Go
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
|
|
}
|