diff options
author | xegineering <me@xegineering.eu> | 2024-10-02 21:18:51 +0200 |
---|---|---|
committer | xegineering <me@xegineering.eu> | 2024-10-02 21:18:51 +0200 |
commit | 07741b358ba75350e7be36ee76f45afa18b0461b (patch) | |
tree | e9dccde0151f9afdc8703c09f665d043149ddce7 /client.go | |
parent | cdd23b4b0a7c14dba738f035e75ac640f1ca3e85 (diff) | |
download | soundbox-go-07741b358ba75350e7be36ee76f45afa18b0461b.tar soundbox-go-07741b358ba75350e7be36ee76f45afa18b0461b.tar.zst soundbox-go-07741b358ba75350e7be36ee76f45afa18b0461b.zip |
Rename Soundbox to Client
Since the module name is `soundbox` naming the primary type of the
module also `Soundbox` is redundant. Following similar code from the Go
standard library this struct is renamed to `Client`.
Diffstat (limited to 'client.go')
-rw-r--r-- | client.go | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/client.go b/client.go new file mode 100644 index 0000000..27e5d54 --- /dev/null +++ b/client.go @@ -0,0 +1,31 @@ +package soundbox + +import ( + "fmt" + "net" +) + +// Port is the default network port a soundbox is listening to for incoming +// audio stream data. +const Port = 5316 + +type Client struct { + HardwareAddr net.HardwareAddr +} + +func NewClient(mac string) (Client, error) { + hardwareAddr, err := net.ParseMAC(mac) + if err != nil { + return Client{}, err + } + + return fromHardwareAddr(hardwareAddr) +} + +func fromHardwareAddr(addr net.HardwareAddr) (Client, error) { + if len(addr) != 6 { + return Client{}, fmt.Errorf("Only IEEE 802 MAC-48 addresses supported") + } + + return Client{HardwareAddr: addr}, nil +} |