From b2730a35adad324eb477b67fd217dae683e0bf3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Fri, 15 May 2020 08:32:35 +0200 Subject: [PATCH] Add stop-condition to Sonos queue consumer --- .../main/java/io/bartek/ttsserver/sonos/SonosQueue.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/bartek/ttsserver/sonos/SonosQueue.kt b/app/src/main/java/io/bartek/ttsserver/sonos/SonosQueue.kt index 2a60db9..40311e4 100644 --- a/app/src/main/java/io/bartek/ttsserver/sonos/SonosQueue.kt +++ b/app/src/main/java/io/bartek/ttsserver/sonos/SonosQueue.kt @@ -1,6 +1,8 @@ package io.bartek.ttsserver.sonos import com.vmichalak.sonoscontroller.SonosDiscovery +import io.bartek.ttsserver.service.ForegroundService +import io.bartek.ttsserver.service.ServiceState import io.bartek.ttsserver.tts.TTS import io.bartek.ttsserver.web.SonosTTSRequestData import java.util.concurrent.BlockingQueue @@ -12,8 +14,9 @@ private class Consumer( private val port: Int, private val queue: BlockingQueue ) : Runnable { + override fun run() = try { - while (true) { + while (ForegroundService.state == ServiceState.RUNNING) { consume(queue.take()) } } catch (e: InterruptedException) { @@ -36,7 +39,9 @@ private class Consumer( class SonosQueue(tts: TTS, host: String, port: Int) { private val queue: BlockingQueue = LinkedBlockingQueue() - private val consumer = Thread(Consumer(tts, host, port, queue)) + private val consumer = Thread(Consumer(tts, host, port, queue)).also { + it.name = "SONOS_QUEUE" + } init { consumer.start() }