feat: add quota limiter and quota API (#107)

This commit is contained in:
Usishchev Yury
2026-06-20 08:44:42 +02:00
committed by GitHub
parent b7d807b464
commit b23553d37a
16 changed files with 1343 additions and 4 deletions
+8
View File
@@ -0,0 +1,8 @@
package registry
import "github.com/go-gost/x/limiter/quota"
// quotaLimiterRegistry holds shared quota limiters; Unregister closes them.
type quotaLimiterRegistry struct {
registry[*quota.Limiter]
}
+7
View File
@@ -23,6 +23,7 @@ import (
"github.com/go-gost/core/router"
"github.com/go-gost/core/sd"
"github.com/go-gost/core/service"
"github.com/go-gost/x/limiter/quota"
)
var (
@@ -49,6 +50,7 @@ var (
trafficLimiterReg reg.Registry[traffic.TrafficLimiter] = new(trafficLimiterRegistry)
connLimiterReg reg.Registry[conn.ConnLimiter] = new(connLimiterRegistry)
rateLimiterReg reg.Registry[rate.RateLimiter] = new(rateLimiterRegistry)
quotaLimiterReg reg.Registry[*quota.Limiter] = new(quotaLimiterRegistry)
ingressReg reg.Registry[ingress.Ingress] = new(ingressRegistry)
routerReg reg.Registry[router.Router] = new(routerRegistry)
@@ -200,6 +202,11 @@ func RateLimiterRegistry() reg.Registry[rate.RateLimiter] {
return rateLimiterReg
}
// QuotaLimiterRegistry returns the global registry of quota limiter instances.
func QuotaLimiterRegistry() reg.Registry[*quota.Limiter] {
return quotaLimiterReg
}
// IngressRegistry returns the global registry of ingress instances.
func IngressRegistry() reg.Registry[ingress.Ingress] {
return ingressReg