add conn limiter

This commit is contained in:
ginuerzh 2022-09-14 00:14:20 +08:00
parent e7a104651a
commit 45b7ac2021
4 changed files with 34 additions and 16 deletions

View File

@ -11,7 +11,7 @@ import (
)
const (
DefaultTimeout = 15 * time.Second
DefaultTimeout = 10 * time.Second
)
var (

10
limiter/conn/limiter.go Normal file
View File

@ -0,0 +1,10 @@
package conn
type Limiter interface {
Allow(n int) bool
Limit() int
}
type ConnLimiter interface {
Limiter(key string) Limiter
}

View File

@ -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
}

View File

@ -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
}
}