| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- package internet
- import (
- "net"
- "github.com/v2fly/v2ray-core/v5/common"
- "github.com/v2fly/v2ray-core/v5/features/stats"
- )
- type Connection interface {
- net.Conn
- }
- type AbstractPacketConnReader interface {
- ReadFrom(p []byte) (n int, addr net.Addr, err error)
- }
- type AbstractPacketConnWriter interface {
- WriteTo(p []byte, addr net.Addr) (n int, err error)
- }
- type AbstractPacketConn interface {
- AbstractPacketConnReader
- AbstractPacketConnWriter
- common.Closable
- }
- type PacketConn interface {
- AbstractPacketConn
- net.PacketConn
- }
- 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
- }
|