Add multi-universe receiver support
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
23
receiver.go
23
receiver.go
@@ -25,6 +25,29 @@ func NewUniverseReceiver(iface *net.Interface, universe uint16) (*Receiver, erro
|
||||
}, nil
|
||||
}
|
||||
|
||||
func NewMultiUniverseReceiver(iface *net.Interface, universes []uint16) (*Receiver, error) {
|
||||
if len(universes) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
c, err := multicast.ListenMulticastUDPPort("udp4", iface, Port)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, u := range universes {
|
||||
if err := c.JoinGroup(MulticastAddr(u)); err != nil {
|
||||
c.Close()
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
return &Receiver{
|
||||
conn: c,
|
||||
done: make(chan struct{}),
|
||||
}, nil
|
||||
}
|
||||
|
||||
func NewDiscoveryReceiver(iface *net.Interface) (*Receiver, error) {
|
||||
c, err := multicast.ListenMulticastUDP("udp4", iface, DiscoveryAddr)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user