github.com/metacubex/mihomo@v1.18.5/common/net/packet/ref_sing.go (about) 1 package packet 2 3 import ( 4 "runtime" 5 6 "github.com/sagernet/sing/common/buf" 7 M "github.com/sagernet/sing/common/metadata" 8 N "github.com/sagernet/sing/common/network" 9 ) 10 11 type refSingPacketConn struct { 12 *refPacketConn 13 singPacketConn SingPacketConn 14 } 15 16 var _ N.NetPacketConn = (*refSingPacketConn)(nil) 17 18 func (c *refSingPacketConn) WritePacket(buffer *buf.Buffer, destination M.Socksaddr) error { 19 defer runtime.KeepAlive(c.ref) 20 return c.singPacketConn.WritePacket(buffer, destination) 21 } 22 23 func (c *refSingPacketConn) ReadPacket(buffer *buf.Buffer) (destination M.Socksaddr, err error) { 24 defer runtime.KeepAlive(c.ref) 25 return c.singPacketConn.ReadPacket(buffer) 26 }