add conn limiter
This commit is contained in:
parent
e7a104651a
commit
45b7ac2021
@ -11,7 +11,7 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
DefaultTimeout = 15 * time.Second
|
||||
DefaultTimeout = 10 * time.Second
|
||||
)
|
||||
|
||||
var (
|
||||
|
10
limiter/conn/limiter.go
Normal file
10
limiter/conn/limiter.go
Normal file
@ -0,0 +1,10 @@
|
||||
package conn
|
||||
|
||||
type Limiter interface {
|
||||
Allow(n int) bool
|
||||
Limit() int
|
||||
}
|
||||
|
||||
type ConnLimiter interface {
|
||||
Limiter(key string) Limiter
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package limiter
|
||||
package traffic
|
||||
|
||||
import "context"
|
||||
|
||||
@ -9,7 +9,7 @@ type Limiter interface {
|
||||
Limit() int
|
||||
}
|
||||
|
||||
type RateLimiter interface {
|
||||
type TrafficLimiter interface {
|
||||
In(key string) Limiter
|
||||
Out(key string) Limiter
|
||||
}
|
@ -7,21 +7,23 @@ import (
|
||||
"github.com/go-gost/core/admission"
|
||||
"github.com/go-gost/core/auth"
|
||||
"github.com/go-gost/core/chain"
|
||||
"github.com/go-gost/core/limiter"
|
||||
"github.com/go-gost/core/limiter/conn"
|
||||
"github.com/go-gost/core/limiter/traffic"
|
||||
"github.com/go-gost/core/logger"
|
||||
)
|
||||
|
||||
type Options struct {
|
||||
Addr string
|
||||
Auther auth.Authenticator
|
||||
Auth *url.Userinfo
|
||||
TLSConfig *tls.Config
|
||||
Admission admission.Admission
|
||||
RateLimiter limiter.RateLimiter
|
||||
Chain chain.Chainer
|
||||
Logger logger.Logger
|
||||
Service string
|
||||
ProxyProtocol int
|
||||
Addr string
|
||||
Auther auth.Authenticator
|
||||
Auth *url.Userinfo
|
||||
TLSConfig *tls.Config
|
||||
Admission admission.Admission
|
||||
TrafficLimiter traffic.TrafficLimiter
|
||||
ConnLimiter conn.ConnLimiter
|
||||
Chain chain.Chainer
|
||||
Logger logger.Logger
|
||||
Service string
|
||||
ProxyProtocol int
|
||||
}
|
||||
|
||||
type Option func(opts *Options)
|
||||
@ -56,9 +58,15 @@ func AdmissionOption(admission admission.Admission) Option {
|
||||
}
|
||||
}
|
||||
|
||||
func RateLimiterOption(rlimiter limiter.RateLimiter) Option {
|
||||
func TrafficLimiterOption(limiter traffic.TrafficLimiter) Option {
|
||||
return func(opts *Options) {
|
||||
opts.RateLimiter = rlimiter
|
||||
opts.TrafficLimiter = limiter
|
||||
}
|
||||
}
|
||||
|
||||
func ConnLimiterOption(limiter conn.ConnLimiter) Option {
|
||||
return func(opts *Options) {
|
||||
opts.ConnLimiter = limiter
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user