Apply go fix modernizations
This commit is contained in:
@@ -60,10 +60,7 @@ func FuzzBuildParseRoundtrip(f *testing.F) {
|
|||||||
if dataPkt.Universe != universe {
|
if dataPkt.Universe != universe {
|
||||||
t.Fatalf("universe mismatch: sent %d, got %d", universe, dataPkt.Universe)
|
t.Fatalf("universe mismatch: sent %d, got %d", universe, dataPkt.Universe)
|
||||||
}
|
}
|
||||||
expectedLen := len(dmxInput)
|
expectedLen := min(len(dmxInput), 512)
|
||||||
if expectedLen > 512 {
|
|
||||||
expectedLen = 512
|
|
||||||
}
|
|
||||||
if !bytes.Equal(dataPkt.Data[:expectedLen], dmxInput[:expectedLen]) {
|
if !bytes.Equal(dataPkt.Data[:expectedLen], dmxInput[:expectedLen]) {
|
||||||
t.Fatalf("dmx data mismatch")
|
t.Fatalf("dmx data mismatch")
|
||||||
}
|
}
|
||||||
|
|||||||
21
protocol.go
21
protocol.go
@@ -58,7 +58,7 @@ func MulticastAddr(universe uint16) *net.UDPAddr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func ParsePacket(data []byte) (interface{}, error) {
|
func ParsePacket(data []byte) (any, error) {
|
||||||
if len(data) < 22 {
|
if len(data) < 22 {
|
||||||
return nil, ErrPacketTooShort
|
return nil, ErrPacketTooShort
|
||||||
}
|
}
|
||||||
@@ -99,10 +99,7 @@ func parseDataPacket(data []byte) (*DataPacket, error) {
|
|||||||
return nil, ErrPacketTooShort
|
return nil, ErrPacketTooShort
|
||||||
}
|
}
|
||||||
|
|
||||||
dmxLen := int(propCount) - 1
|
dmxLen := min(int(propCount)-1, 512)
|
||||||
if dmxLen > 512 {
|
|
||||||
dmxLen = 512
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(data) < 126+dmxLen {
|
if len(data) < 126+dmxLen {
|
||||||
return nil, ErrPacketTooShort
|
return nil, ErrPacketTooShort
|
||||||
@@ -121,7 +118,7 @@ func parseDataPacket(data []byte) (*DataPacket, error) {
|
|||||||
return pkt, nil
|
return pkt, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseExtendedPacket(data []byte) (interface{}, error) {
|
func parseExtendedPacket(data []byte) (any, error) {
|
||||||
if len(data) < 118 {
|
if len(data) < 118 {
|
||||||
return nil, ErrPacketTooShort
|
return nil, ErrPacketTooShort
|
||||||
}
|
}
|
||||||
@@ -149,7 +146,7 @@ func parseExtendedPacket(data []byte) (interface{}, error) {
|
|||||||
|
|
||||||
universeCount := (len(data) - 120) / 2
|
universeCount := (len(data) - 120) / 2
|
||||||
pkt.Universes = make([]uint16, 0, universeCount)
|
pkt.Universes = make([]uint16, 0, universeCount)
|
||||||
for i := 0; i < universeCount; i++ {
|
for i := range universeCount {
|
||||||
u := binary.BigEndian.Uint16(data[120+i*2 : 122+i*2])
|
u := binary.BigEndian.Uint16(data[120+i*2 : 122+i*2])
|
||||||
if u >= 1 && u <= 63999 {
|
if u >= 1 && u <= 63999 {
|
||||||
pkt.Universes = append(pkt.Universes, u)
|
pkt.Universes = append(pkt.Universes, u)
|
||||||
@@ -160,10 +157,7 @@ func parseExtendedPacket(data []byte) (interface{}, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func BuildDataPacket(universe uint16, sequence uint8, sourceName string, cid [16]byte, data []byte) []byte {
|
func BuildDataPacket(universe uint16, sequence uint8, sourceName string, cid [16]byte, data []byte) []byte {
|
||||||
dataLen := len(data)
|
dataLen := min(len(data), 512)
|
||||||
if dataLen > 512 {
|
|
||||||
dataLen = 512
|
|
||||||
}
|
|
||||||
|
|
||||||
pktLen := 126 + dataLen
|
pktLen := 126 + dataLen
|
||||||
buf := make([]byte, pktLen)
|
buf := make([]byte, pktLen)
|
||||||
@@ -200,10 +194,7 @@ func BuildDataPacket(universe uint16, sequence uint8, sourceName string, cid [16
|
|||||||
}
|
}
|
||||||
|
|
||||||
func BuildDiscoveryPacket(sourceName string, cid [16]byte, page, lastPage uint8, universes []uint16) []byte {
|
func BuildDiscoveryPacket(sourceName string, cid [16]byte, page, lastPage uint8, universes []uint16) []byte {
|
||||||
universeCount := len(universes)
|
universeCount := min(len(universes), 512)
|
||||||
if universeCount > 512 {
|
|
||||||
universeCount = 512
|
|
||||||
}
|
|
||||||
|
|
||||||
pktLen := 120 + universeCount*2
|
pktLen := 120 + universeCount*2
|
||||||
buf := make([]byte, pktLen)
|
buf := make([]byte, pktLen)
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
|
|
||||||
type Receiver struct {
|
type Receiver struct {
|
||||||
conn *multicast.Conn
|
conn *multicast.Conn
|
||||||
handler func(src *net.UDPAddr, pkt interface{})
|
handler func(src *net.UDPAddr, pkt any)
|
||||||
done chan struct{}
|
done chan struct{}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -60,7 +60,7 @@ func NewDiscoveryReceiver(iface *net.Interface) (*Receiver, error) {
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Receiver) SetHandler(fn func(src *net.UDPAddr, pkt interface{})) {
|
func (r *Receiver) SetHandler(fn func(src *net.UDPAddr, pkt any)) {
|
||||||
r.handler = fn
|
r.handler = fn
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
11
sender.go
11
sender.go
@@ -3,7 +3,7 @@ package sacn
|
|||||||
import (
|
import (
|
||||||
"crypto/rand"
|
"crypto/rand"
|
||||||
"net"
|
"net"
|
||||||
"sort"
|
"slices"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -128,17 +128,14 @@ func (s *Sender) sendDiscovery() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
sort.Slice(universes, func(i, j int) bool { return universes[i] < universes[j] })
|
slices.Sort(universes)
|
||||||
|
|
||||||
const maxPerPage = 512
|
const maxPerPage = 512
|
||||||
totalPages := (len(universes) + maxPerPage - 1) / maxPerPage
|
totalPages := (len(universes) + maxPerPage - 1) / maxPerPage
|
||||||
|
|
||||||
for page := 0; page < totalPages; page++ {
|
for page := range totalPages {
|
||||||
start := page * maxPerPage
|
start := page * maxPerPage
|
||||||
end := start + maxPerPage
|
end := min(start+maxPerPage, len(universes))
|
||||||
if end > len(universes) {
|
|
||||||
end = len(universes)
|
|
||||||
}
|
|
||||||
pkt := BuildDiscoveryPacket(s.sourceName, s.cid, uint8(page), uint8(totalPages-1), universes[start:end])
|
pkt := BuildDiscoveryPacket(s.sourceName, s.cid, uint8(page), uint8(totalPages-1), universes[start:end])
|
||||||
s.conn.WriteToUDP(pkt, DiscoveryAddr)
|
s.conn.WriteToUDP(pkt, DiscoveryAddr)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user