summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-07-19 18:21:42 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-07-22 21:32:39 +0000
commita26b62f9dabf12fcfd3c71612ab9417665cac77b (patch)
tree51ac345da326f073ee7b32a0fb05ced0de581072 /android
parent0347ddb088c2fa67ea65fa41f39c887af831bedb (diff)
downloadmullvadvpn-a26b62f9dabf12fcfd3c71612ab9417665cac77b.tar.xz
mullvadvpn-a26b62f9dabf12fcfd3c71612ab9417665cac77b.zip
Create `KeyStatusListener` helper class
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/KeyStatusListener.kt45
1 files changed, 45 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/KeyStatusListener.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/KeyStatusListener.kt
new file mode 100644
index 0000000000..1279f59567
--- /dev/null
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/KeyStatusListener.kt
@@ -0,0 +1,45 @@
+package net.mullvad.mullvadvpn.dataproxy
+
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.Deferred
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.GlobalScope
+
+import net.mullvad.mullvadvpn.MullvadDaemon
+import net.mullvad.mullvadvpn.model.KeygenEvent
+
+class KeyStatusListener(val asyncDaemon: Deferred<MullvadDaemon>) {
+ private var daemon: MullvadDaemon? = null
+
+ private val setUpJob = setUp()
+
+ var keyStatus: KeygenEvent? = null
+ private set(value) {
+ synchronized(this) {
+ field = value
+
+ if (value != null) {
+ onKeyStatusChange?.invoke(value)
+ }
+ }
+ }
+
+ var onKeyStatusChange: ((KeygenEvent) -> Unit)? = null
+ set(value) {
+ field = value
+
+ synchronized(this) {
+ keyStatus?.let { status -> value?.invoke(status) }
+ }
+ }
+
+ private fun setUp() = GlobalScope.launch(Dispatchers.Default) {
+ daemon = asyncDaemon.await()
+ daemon?.onKeygenEvent = { event -> keyStatus = event }
+ }
+
+ fun onDestroy() {
+ setUpJob.cancel()
+ daemon?.onKeygenEvent = null
+ }
+}