From c722bb6028609d58bf8ab70221ee89bd80a3b6f9 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Sun, 20 May 2018 02:16:47 +0200 Subject: [PATCH] Added logging primitives to help with #79 --- .../quasseldroid/service/QuasselService.kt | 26 +++---------------- .../libquassel/connection/CoreConnection.kt | 11 +++----- .../libquassel/session/SessionManager.kt | 21 ++++++++++++--- 3 files changed, 25 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt index 2223998f1..e701a543b 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselService.kt @@ -34,6 +34,8 @@ import de.kuschku.libquassel.session.Backend import de.kuschku.libquassel.session.ISession import de.kuschku.libquassel.session.Session import de.kuschku.libquassel.session.SessionManager +import de.kuschku.libquassel.util.compatibility.LoggingHandler +import de.kuschku.libquassel.util.compatibility.LoggingHandler.LogLevel.INFO import de.kuschku.libquassel.util.helpers.value import de.kuschku.malheur.CrashHandler import de.kuschku.quasseldroid.BuildConfig @@ -224,28 +226,6 @@ class QuasselService : DaggerLifecycleService(), } } - private fun updateConnection(accountId: Long, reconnect: Boolean) { - handlerService.backend { - val account = if (accountId != -1L && reconnect) { - accountDatabase.accounts().findById(accountId) - } else { - null - } - - if (account == null) { - backendImplementation.disconnect(true) - stopSelf() - } else { - backendImplementation.connectUnlessConnected( - SocketAddress(account.host, account.port), - account.user, - account.pass, - true - ) - } - } - } - private lateinit var sessionManager: SessionManager private lateinit var clientData: ClientData @@ -371,6 +351,7 @@ class QuasselService : DaggerLifecycleService(), .toLiveData() .observe(this, Observer { handlerService.backend { + LoggingHandler.log(INFO, "QuasselService", "Autoreconnect: Network changed") sessionManager.autoReconnect(true) } }) @@ -383,6 +364,7 @@ class QuasselService : DaggerLifecycleService(), .observe( this, Observer { handlerService.backend { + LoggingHandler.log(INFO, "QuasselService", "Autoreconnect: Closed") sessionManager.autoReconnect() } }) diff --git a/lib/src/main/java/de/kuschku/libquassel/connection/CoreConnection.kt b/lib/src/main/java/de/kuschku/libquassel/connection/CoreConnection.kt index c15f146bf..d93b55792 100644 --- a/lib/src/main/java/de/kuschku/libquassel/connection/CoreConnection.kt +++ b/lib/src/main/java/de/kuschku/libquassel/connection/CoreConnection.kt @@ -150,7 +150,7 @@ class CoreConnection( channel?.close() interrupt() } catch (e: Throwable) { - log(WARN, TAG, "Error encountered while closing connection", e) + log(WARN, TAG, "Error encountered while closing connection: $e") } } @@ -165,8 +165,7 @@ class CoreConnection( ) ) } catch (e: Throwable) { - log(WARN, - TAG, "Error encountered while serializing handshake message", e) + log(WARN, TAG, "Error encountered while serializing handshake message", e) } } } @@ -182,8 +181,7 @@ class CoreConnection( ) ) } catch (e: Throwable) { - log(WARN, - TAG, "Error encountered while serializing sigproxy message", e) + log(WARN, TAG, "Error encountered while serializing sigproxy message", e) } } } @@ -248,8 +246,7 @@ class CoreConnection( try { handler.handle(msg) } catch (e: Throwable) { - log(WARN, - TAG, "Error encountered while handling sigproxy message", e) + log(WARN, TAG, "Error encountered while handling sigproxy message", e) log(WARN, TAG, msg.toString()) } } diff --git a/lib/src/main/java/de/kuschku/libquassel/session/SessionManager.kt b/lib/src/main/java/de/kuschku/libquassel/session/SessionManager.kt index 2d01dfd78..d4e6721b1 100644 --- a/lib/src/main/java/de/kuschku/libquassel/session/SessionManager.kt +++ b/lib/src/main/java/de/kuschku/libquassel/session/SessionManager.kt @@ -25,8 +25,9 @@ import de.kuschku.libquassel.connection.SocketAddress import de.kuschku.libquassel.protocol.ClientData import de.kuschku.libquassel.quassel.syncables.interfaces.invokers.Invokers import de.kuschku.libquassel.util.compatibility.HandlerService -import de.kuschku.libquassel.util.compatibility.LoggingHandler import de.kuschku.libquassel.util.compatibility.LoggingHandler.Companion.log +import de.kuschku.libquassel.util.compatibility.LoggingHandler.LogLevel.DEBUG +import de.kuschku.libquassel.util.compatibility.LoggingHandler.LogLevel.INFO import de.kuschku.libquassel.util.helpers.or import io.reactivex.BackpressureStrategy import io.reactivex.Flowable @@ -80,7 +81,7 @@ class SessionManager( }) init { - log(LoggingHandler.LogLevel.INFO, "Session", "Session created") + log(INFO, "Session", "Session created") state.subscribe { if (it == ConnectionState.CONNECTED) { @@ -120,6 +121,7 @@ class SessionManager( userData: Pair<String, String>, shouldReconnect: Boolean = false ) { + log(DEBUG, "SessionManager", "Connecting") inProgressSession.value.close() lastClientData = clientData lastTrustManager = trustManager @@ -147,9 +149,16 @@ class SessionManager( fun autoReconnect(forceReconnect: Boolean = false) { if (!hasErrored) { - ifClosed { - reconnect(forceReconnect) + state.or(ConnectionState.DISCONNECTED).let { + if (it == ConnectionState.CLOSED) { + log(INFO, "SessionManager", "Autoreconnect triggered") + reconnect(forceReconnect) + } else { + log(INFO, "SessionManager", "Autoreconnect failed: state is $it") + } } + } else { + log(INFO, "SessionManager", "Autoreconnect failed: hasErrored") } } @@ -163,7 +172,11 @@ class SessionManager( if (clientData != null && trustManager != null && hostnameVerifier != null && address != null && userData != null) { connect(clientData, trustManager, hostnameVerifier, address, userData, forceReconnect) + } else { + log(INFO, "SessionManager", "Reconnect failed: not enough data available") } + } else { + log(INFO, "SessionManager", "Reconnect failed: reconnect not allowed") } } -- GitLab