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