about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFranck Cuny <franck@fcuny.net>2021-10-10 11:34:07 -0700
committerFranck Cuny <franck@fcuny.net>2022-06-11 14:32:07 -0700
commit14744fe82699d39b56d1acf795c7ffef38139b95 (patch)
tree8fada8cbbcc7b2eae807621eb143f1ca15574642
parentmpd: rename function to create the player (diff)
downloadworld-14744fe82699d39b56d1acf795c7ffef38139b95.tar.gz
mpd: add function `Close` to the player
Let's close both the watcher and the client, instead of leaking this
interface to the user.
-rw-r--r--tools/mpd-stats/cmd/mpd-scrobbler/main.go7
-rw-r--r--tools/mpd-stats/internal/mpd/mpd.go10
2 files changed, 15 insertions, 2 deletions
diff --git a/tools/mpd-stats/cmd/mpd-scrobbler/main.go b/tools/mpd-stats/cmd/mpd-scrobbler/main.go
index 3953123..ba7bb05 100644
--- a/tools/mpd-stats/cmd/mpd-scrobbler/main.go
+++ b/tools/mpd-stats/cmd/mpd-scrobbler/main.go
@@ -16,8 +16,11 @@ func main() {
 		log.Fatalf("failed to create a client: %v", err)
 	}
 
-	defer c.Watcher.Close()
-	defer c.Client.Close()
+	defer func() {
+		if err := c.Close(); err != nil {
+			log.Fatalf("failed to close the player: %v", err)
+		}
+	}()
 
 	var (
 		currentRecord  *scrobbler.Record
diff --git a/tools/mpd-stats/internal/mpd/mpd.go b/tools/mpd-stats/internal/mpd/mpd.go
index ed9d3c2..cebf2b2 100644
--- a/tools/mpd-stats/internal/mpd/mpd.go
+++ b/tools/mpd-stats/internal/mpd/mpd.go
@@ -36,3 +36,13 @@ func NewPlayer(net string, addr string) (*player, error) {
 
 	return &p, nil
 }
+
+func (p *player) Close() error {
+	if err := p.Watcher.Close(); err != nil {
+		return err
+	}
+	if err := p.Client.Close(); err != nil {
+		return err
+	}
+	return nil
+}