lux/net/lux_channel.go
2024-12-30 09:57:17 +02:00

57 lines
1,011 B
Go

package net
import "net"
type LuxChannelType uint
const (
LuxChannelInterior = 0
LuxChannelExterior = 1
)
type LuxChannel struct {
Type LuxChannelType
Address *net.UDPAddr
conn *net.UDPConn
}
// bind udp socket to receive packets
func NewLuxInboundChannel(udpStr string, chType LuxChannelType) (LuxChannel, error) {
addr, err := net.ResolveUDPAddr("udp", udpStr)
if err != nil {
return LuxChannel{}, err
}
conn, err := net.ListenUDP("udp", addr)
if err != nil {
return LuxChannel{}, err
}
return LuxChannel{
Type: chType,
Address: addr,
conn: conn,
}, nil
}
func NewLuxOutboundChannel(udpStr string, chType LuxChannelType) (LuxChannel, error) {
addr, err := net.ResolveUDPAddr("udp", udpStr)
if err != nil {
return LuxChannel{}, err
}
conn, err := net.DialUDP("udp", nil, addr)
if err != nil {
return LuxChannel{}, err
}
return LuxChannel{
Type: chType,
Address: addr,
conn: conn,
}, nil
}
func (ch *LuxChannel) Close() {
ch.conn.Close()
}