mirror of https://github.com/XTLS/Xray-core
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
605 B
34 lines
605 B
package internet |
|
|
|
import ( |
|
"net" |
|
|
|
"github.com/xtls/xray-core/features/stats" |
|
) |
|
|
|
type Connection interface { |
|
net.Conn |
|
} |
|
|
|
type StatCouterConnection struct { |
|
Connection |
|
ReadCounter stats.Counter |
|
WriteCounter stats.Counter |
|
} |
|
|
|
func (c *StatCouterConnection) Read(b []byte) (int, error) { |
|
nBytes, err := c.Connection.Read(b) |
|
if c.ReadCounter != nil { |
|
c.ReadCounter.Add(int64(nBytes)) |
|
} |
|
|
|
return nBytes, err |
|
} |
|
|
|
func (c *StatCouterConnection) Write(b []byte) (int, error) { |
|
nBytes, err := c.Connection.Write(b) |
|
if c.WriteCounter != nil { |
|
c.WriteCounter.Add(int64(nBytes)) |
|
} |
|
return nBytes, err |
|
}
|
|
|