conn.go 786 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package context
  2. import (
  3. "github.com/metacubex/mihomo/common/utils"
  4. "net"
  5. N "github.com/metacubex/mihomo/common/net"
  6. C "github.com/metacubex/mihomo/constant"
  7. "github.com/gofrs/uuid/v5"
  8. )
  9. type ConnContext struct {
  10. id uuid.UUID
  11. metadata *C.Metadata
  12. conn *N.BufferedConn
  13. }
  14. func NewConnContext(conn net.Conn, metadata *C.Metadata) *ConnContext {
  15. return &ConnContext{
  16. id: utils.NewUUIDV4(),
  17. metadata: metadata,
  18. conn: N.NewBufferedConn(conn),
  19. }
  20. }
  21. // ID implement C.ConnContext ID
  22. func (c *ConnContext) ID() uuid.UUID {
  23. return c.id
  24. }
  25. // Metadata implement C.ConnContext Metadata
  26. func (c *ConnContext) Metadata() *C.Metadata {
  27. return c.metadata
  28. }
  29. // Conn implement C.ConnContext Conn
  30. func (c *ConnContext) Conn() *N.BufferedConn {
  31. return c.conn
  32. }