packetconn.go 924 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package context
  2. import (
  3. "net"
  4. "github.com/metacubex/mihomo/common/utils"
  5. C "github.com/metacubex/mihomo/constant"
  6. "github.com/gofrs/uuid/v5"
  7. )
  8. type PacketConnContext struct {
  9. id uuid.UUID
  10. metadata *C.Metadata
  11. packetConn net.PacketConn
  12. }
  13. func NewPacketConnContext(metadata *C.Metadata) *PacketConnContext {
  14. return &PacketConnContext{
  15. id: utils.NewUUIDV4(),
  16. metadata: metadata,
  17. }
  18. }
  19. // ID implement C.PacketConnContext ID
  20. func (pc *PacketConnContext) ID() uuid.UUID {
  21. return pc.id
  22. }
  23. // Metadata implement C.PacketConnContext Metadata
  24. func (pc *PacketConnContext) Metadata() *C.Metadata {
  25. return pc.metadata
  26. }
  27. // PacketConn implement C.PacketConnContext PacketConn
  28. func (pc *PacketConnContext) PacketConn() net.PacketConn {
  29. return pc.packetConn
  30. }
  31. // InjectPacketConn injectPacketConn manually
  32. func (pc *PacketConnContext) InjectPacketConn(pconn C.PacketConn) {
  33. pc.packetConn = pconn
  34. }