From c6d03e87d7bb5c7347cc916b7495bb442d829307 Mon Sep 17 00:00:00 2001 From: onyx-and-iris Date: Sat, 14 Feb 2026 20:42:33 +0000 Subject: [PATCH] errors from newPacket() now propogated Send() and Close() methods now use pointer receivers. --- vbantxt.go | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/vbantxt.go b/vbantxt.go index e0fe34e..d40e64e 100644 --- a/vbantxt.go +++ b/vbantxt.go @@ -8,7 +8,7 @@ import ( // VbanTxt is used to send VBAN-TXT requests to a distant Voicemeeter/Matrix. type VbanTxt struct { - udpConn io.WriteCloser + conn io.WriteCloser packet packet ratelimit time.Duration } @@ -16,14 +16,19 @@ type VbanTxt struct { // New constructs a fully formed VbanTxt instance. This is the package's entry point. // It sets default values for it's fields and then runs the option functions. func New(host string, port int, streamname string, options ...Option) (*VbanTxt, error) { - udpConn, err := newUDPConn(host, port) + conn, err := newUDPConn(host, port) if err != nil { return nil, fmt.Errorf("error creating UDP client for (%s:%d): %w", host, port, err) } + packet, err := newPacket(streamname) + if err != nil { + return nil, fmt.Errorf("error creating packet: %w", err) + } + vt := &VbanTxt{ - udpConn: udpConn, - packet: newPacket(streamname), + conn: conn, + packet: packet, ratelimit: time.Duration(20) * time.Millisecond, } @@ -34,10 +39,10 @@ func New(host string, port int, streamname string, options ...Option) (*VbanTxt, return vt, nil } -// Send is resonsible for firing each VBAN-TXT request. +// Send is responsible for firing each VBAN-TXT request. // It waits for {vt.ratelimit} time before returning. -func (vt VbanTxt) Send(cmd string) error { - _, err := vt.udpConn.Write(append(vt.packet.header(), []byte(cmd)...)) +func (vt *VbanTxt) Send(cmd string) error { + _, err := vt.conn.Write(append(vt.packet.header(), cmd...)) if err != nil { return fmt.Errorf("error sending command (%s): %w", cmd, err) } @@ -50,8 +55,8 @@ func (vt VbanTxt) Send(cmd string) error { } // Close is responsible for closing the UDP Client connection. -func (vt VbanTxt) Close() error { - err := vt.udpConn.Close() +func (vt *VbanTxt) Close() error { + err := vt.conn.Close() if err != nil { return fmt.Errorf("error attempting to close UDP Client: %w", err) }