x/limiter/wrapper/listener.go
2022-09-05 22:47:51 +08:00

33 lines
483 B
Go

package wrapper
import (
"net"
"github.com/go-gost/core/limiter"
)
type listener struct {
net.Listener
rlimiter limiter.RateLimiter
}
func WrapListener(rlimiter limiter.RateLimiter, ln net.Listener) net.Listener {
if rlimiter == nil {
return ln
}
return &listener{
rlimiter: rlimiter,
Listener: ln,
}
}
func (ln *listener) Accept() (net.Conn, error) {
c, err := ln.Listener.Accept()
if err != nil {
return nil, err
}
return WrapConn(ln.rlimiter, c), nil
}