From 3d2573f8aa1817caac66b5577ca548751ed19a08 Mon Sep 17 00:00:00 2001 From: Reinout Meliesie Date: Thu, 22 Jan 2026 19:02:40 +0100 Subject: [PATCH] Log exceptions that occur in the MQTT coroutine --- .../com/kernelmaft/zanbur/network/exception-printer.kt | 10 ++++++++++ .../main/java/com/kernelmaft/zanbur/network/mqtt.kt | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/kernelmaft/zanbur/network/exception-printer.kt diff --git a/app/src/main/java/com/kernelmaft/zanbur/network/exception-printer.kt b/app/src/main/java/com/kernelmaft/zanbur/network/exception-printer.kt new file mode 100644 index 0000000..cd8b172 --- /dev/null +++ b/app/src/main/java/com/kernelmaft/zanbur/network/exception-printer.kt @@ -0,0 +1,10 @@ +package com.kernelmaft.zanbur.network + +import kotlinx.coroutines.CoroutineExceptionHandler + + + +val exceptionPrinter = CoroutineExceptionHandler { _ , throwable -> + throwable . printStackTrace () + throw throwable +} diff --git a/app/src/main/java/com/kernelmaft/zanbur/network/mqtt.kt b/app/src/main/java/com/kernelmaft/zanbur/network/mqtt.kt index 212d73a..1710834 100644 --- a/app/src/main/java/com/kernelmaft/zanbur/network/mqtt.kt +++ b/app/src/main/java/com/kernelmaft/zanbur/network/mqtt.kt @@ -25,7 +25,7 @@ object MqttClient { this . coroutineScope = coroutineScope val json = Json { ignoreUnknownKeys = true } - coroutineScope . launch (IO) { + coroutineScope . launch ( IO + exceptionPrinter ) { client = MQTTClient ( MQTT5 , MQTT_SERVER_HOST , MQTT_SERVER_PORT , null ) { for ( handler in publishHandlers ) handler ( it , json ) } @@ -38,7 +38,7 @@ object MqttClient { fun addPublishHandler ( handler : MqttPublishHandler ) = publishHandlers . add (handler) fun publish ( topic : String , payload : UByteArray ) { - coroutineScope !! . launch (IO) { + coroutineScope !! . launch ( IO + exceptionPrinter ) { client !! . publish ( false , AT_MOST_ONCE , topic , payload ) } }