diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2023-05-21 14:44:33 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2023-05-21 14:44:33 +0200 |
| commit | d4dbb47ac776471eb8a9f91a97da40b9b6621a74 (patch) | |
| tree | ea6dc9824b3bc821d6618fe41472050277f6d25b /player.go | |
| parent | f638d3975225b895e7b0a8fb79c6c6de288a732a (diff) | |
| download | WRMS-d4dbb47ac776471eb8a9f91a97da40b9b6621a74.tar.gz WRMS-d4dbb47ac776471eb8a9f91a97da40b9b6621a74.zip | |
paralyze searching
Diffstat (limited to 'player.go')
| -rw-r--r-- | player.go | 23 |
1 files changed, 19 insertions, 4 deletions
@@ -3,6 +3,7 @@ package main import ( "io" "os/exec" + "sync" "syscall" "muhq.space/go/wrms/llog" @@ -110,10 +111,24 @@ func (player *Player) Pause() { } } -func (player *Player) Search(pattern string) []Song { - results := []Song{} +func (player *Player) Search(pattern string) chan []Song { + var wg sync.WaitGroup + wg.Add(len(player.Backends)) + + ch := make(chan []Song) + for _, backend := range player.Backends { - results = append(results, backend.Search(pattern)...) + backend := backend + go func() { + ch <- backend.Search(pattern) + wg.Done() + }() } - return results + + go func() { + wg.Wait() + close(ch) + }() + + return ch } |
