From e2ba5a61a96875cc891a16ac34b1aac70e27bf3a Mon Sep 17 00:00:00 2001 From: ale <ale@incal.net> Date: Wed, 20 Aug 2014 20:41:48 +0100 Subject: [PATCH] reflect gompd API changes --- client/mpd/djmpd/djmpd.go | 4 +--- client/mpd/djrandom.go | 12 ++++++------ 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/client/mpd/djmpd/djmpd.go b/client/mpd/djmpd/djmpd.go index c0202e5..a4512ff 100644 --- a/client/mpd/djmpd/djmpd.go +++ b/client/mpd/djmpd/djmpd.go @@ -17,9 +17,7 @@ func main() { flag.Parse() db := djmpd.NewDJRandomDatabase() - player := mpd.NewPortAudioPlayer() - db.SetupPlayRecorder(player) - m := mpd.NewMPD(player, db) + m := mpd.NewMPD(db, db.GetPlayRecorder()) m.HandleURL("djrandom", db) log.Fatal(m.ListenAndServe(fmt.Sprintf(":%d", *port))) } diff --git a/client/mpd/djrandom.go b/client/mpd/djrandom.go index e43cded..3ba3535 100644 --- a/client/mpd/djrandom.go +++ b/client/mpd/djrandom.go @@ -120,11 +120,12 @@ type songReader struct { url string pos, size int64 resp *http.Response + closed bool } func (r *songReader) Read(buf []byte) (int, error) { var err error - for i := 0; i < 2; i++ { + for i := 0; !r.closed && i < 3; i++ { if r.pos >= r.size { return 0, io.EOF } @@ -144,7 +145,6 @@ func (r *songReader) Read(buf []byte) (int, error) { r.pos += int64(n) return n, err } - log.Printf("HTTP read error: %v", err) r.resp.Body.Close() r.resp = nil } @@ -152,6 +152,7 @@ func (r *songReader) Read(buf []byte) (int, error) { } func (r *songReader) Close() error { + r.closed = true if r.resp != nil { r.resp.Body.Close() } @@ -256,9 +257,8 @@ func (d *DJRandomDatabase) GetSong(songURL *url.URL) (mpd.Song, error) { return newDJRandomSong(&resp, d.client), nil } -func (d *DJRandomDatabase) SetupPlayRecorder(player mpd.Player) { - rec := newPlayRecorder(d.client) - player.SetSongPlayedCallback(rec.SongPlayed) +func (d *DJRandomDatabase) GetPlayRecorder() *PlayRecorder { + return newPlayRecorder(d.client) } type PlayRecorder struct { @@ -277,7 +277,7 @@ func newPlayRecorder(client *util.HttpClient) *PlayRecorder { } } -func (r *PlayRecorder) SongPlayed(song mpd.Song) { +func (r *PlayRecorder) Notify(song mpd.Song) { s, ok := song.(*DJRandomSong) if !ok { return -- GitLab