package context import ( "net" CN "github.com/Dreamacro/clash/common/net" C "github.com/Dreamacro/clash/constant" "github.com/gofrs/uuid" ) type ConnContext struct { id uuid.UUID metadata *C.Metadata conn net.Conn } func NewConnContext(conn net.Conn, metadata *C.Metadata) *ConnContext { id, _ := uuid.NewV4() if _, ok := conn.(*CN.BufferedConn); !ok { conn = CN.NewBufferedConn(conn) } return &ConnContext{ id: id, metadata: metadata, conn: conn, } } // ID implement C.ConnContext ID func (c *ConnContext) ID() uuid.UUID { return c.id } // Metadata implement C.ConnContext Metadata func (c *ConnContext) Metadata() *C.Metadata { return c.metadata } // Conn implement C.ConnContext Conn func (c *ConnContext) Conn() net.Conn { return c.conn }