1
0

conn.go 546 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package rate
  2. import (
  3. "io"
  4. "net"
  5. )
  6. type rateConn struct {
  7. conn net.Conn
  8. rate *Rate
  9. }
  10. func NewRateConn(conn net.Conn, rate *Rate) io.ReadWriteCloser {
  11. return &rateConn{
  12. conn: conn,
  13. rate: rate,
  14. }
  15. }
  16. func (s *rateConn) Read(b []byte) (n int, err error) {
  17. n, err = s.conn.Read(b)
  18. if s.rate != nil {
  19. s.rate.Get(int64(n))
  20. }
  21. return
  22. }
  23. func (s *rateConn) Write(b []byte) (n int, err error) {
  24. n, err = s.conn.Write(b)
  25. if s.rate != nil {
  26. s.rate.Get(int64(n))
  27. }
  28. return
  29. }
  30. func (s *rateConn) Close() error {
  31. return s.conn.Close()
  32. }