Refactor: make inbound request contextual
This commit is contained in:
43
context/packetconn.go
Normal file
43
context/packetconn.go
Normal file
@ -0,0 +1,43 @@
|
||||
package context
|
||||
|
||||
import (
|
||||
"net"
|
||||
|
||||
C "github.com/Dreamacro/clash/constant"
|
||||
|
||||
"github.com/gofrs/uuid"
|
||||
)
|
||||
|
||||
type PacketConnContext struct {
|
||||
id uuid.UUID
|
||||
metadata *C.Metadata
|
||||
packetConn net.PacketConn
|
||||
}
|
||||
|
||||
func NewPacketConnContext(metadata *C.Metadata) *PacketConnContext {
|
||||
id, _ := uuid.NewV4()
|
||||
return &PacketConnContext{
|
||||
id: id,
|
||||
metadata: metadata,
|
||||
}
|
||||
}
|
||||
|
||||
// ID implement C.PacketConnContext ID
|
||||
func (pc *PacketConnContext) ID() uuid.UUID {
|
||||
return pc.id
|
||||
}
|
||||
|
||||
// Metadata implement C.PacketConnContext Metadata
|
||||
func (pc *PacketConnContext) Metadata() *C.Metadata {
|
||||
return pc.metadata
|
||||
}
|
||||
|
||||
// PacketConn implement C.PacketConnContext PacketConn
|
||||
func (pc *PacketConnContext) PacketConn() net.PacketConn {
|
||||
return pc.packetConn
|
||||
}
|
||||
|
||||
// InjectPacketConn injectPacketConn manually
|
||||
func (pc *PacketConnContext) InjectPacketConn(pconn C.PacketConn) {
|
||||
pc.packetConn = pconn
|
||||
}
|
Reference in New Issue
Block a user