add conn limiter
This commit is contained in:
parent
e7a104651a
commit
45b7ac2021
@ -11,7 +11,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
DefaultTimeout = 15 * time.Second
|
DefaultTimeout = 10 * time.Second
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
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"
|
import "context"
|
||||||
|
|
||||||
@ -9,7 +9,7 @@ type Limiter interface {
|
|||||||
Limit() int
|
Limit() int
|
||||||
}
|
}
|
||||||
|
|
||||||
type RateLimiter interface {
|
type TrafficLimiter interface {
|
||||||
In(key string) Limiter
|
In(key string) Limiter
|
||||||
Out(key string) Limiter
|
Out(key string) Limiter
|
||||||
}
|
}
|
@ -7,7 +7,8 @@ import (
|
|||||||
"github.com/go-gost/core/admission"
|
"github.com/go-gost/core/admission"
|
||||||
"github.com/go-gost/core/auth"
|
"github.com/go-gost/core/auth"
|
||||||
"github.com/go-gost/core/chain"
|
"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"
|
"github.com/go-gost/core/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -17,7 +18,8 @@ type Options struct {
|
|||||||
Auth *url.Userinfo
|
Auth *url.Userinfo
|
||||||
TLSConfig *tls.Config
|
TLSConfig *tls.Config
|
||||||
Admission admission.Admission
|
Admission admission.Admission
|
||||||
RateLimiter limiter.RateLimiter
|
TrafficLimiter traffic.TrafficLimiter
|
||||||
|
ConnLimiter conn.ConnLimiter
|
||||||
Chain chain.Chainer
|
Chain chain.Chainer
|
||||||
Logger logger.Logger
|
Logger logger.Logger
|
||||||
Service string
|
Service string
|
||||||
@ -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) {
|
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