Files
V2bX/common/rate/conn.go
2025-12-03 05:23:08 +09:00

29 lines
452 B
Go

package rate
import (
"net"
"github.com/juju/ratelimit"
)
func NewConnRateLimiter(c net.Conn, l *ratelimit.Bucket) *Conn {
return &Conn{
Conn: c,
limiter: l,
}
}
type Conn struct {
net.Conn
limiter *ratelimit.Bucket
}
func (c *Conn) Read(b []byte) (n int, err error) {
c.limiter.Wait(int64(len(b)))
return c.Conn.Read(b)
}
func (c *Conn) Write(b []byte) (n int, err error) {
c.limiter.Wait(int64(len(b)))
return c.Conn.Write(b)
}