summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-05-22 14:55:39 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-05-25 11:51:59 +0000
commit45d1f2afcde9175039788354acc9a6b908cca153 (patch)
tree876b2acbc324262b336e663676b250b64a7ecb90 /android/src
parentfeda5f8ef53f2d8edcd0d35190dd1d281f657e2d (diff)
downloadmullvadvpn-45d1f2afcde9175039788354acc9a6b908cca153.tar.xz
mullvadvpn-45d1f2afcde9175039788354acc9a6b908cca153.zip
Refactor `EventNotifier` to use objects as IDs
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/talpid/util/EventNotifier.kt14
1 files changed, 10 insertions, 4 deletions
diff --git a/android/src/main/kotlin/net/mullvad/talpid/util/EventNotifier.kt b/android/src/main/kotlin/net/mullvad/talpid/util/EventNotifier.kt
index 41cf1a7b3e..13d9fecc14 100644
--- a/android/src/main/kotlin/net/mullvad/talpid/util/EventNotifier.kt
+++ b/android/src/main/kotlin/net/mullvad/talpid/util/EventNotifier.kt
@@ -1,7 +1,7 @@
package net.mullvad.talpid.util
class EventNotifier<T>(private val initialValue: T) {
- private val listeners = HashMap<Int, (T) -> Unit>()
+ private val listeners = HashMap<Any, (T) -> Unit>()
private var idCounter = 0
private var latestEvent = initialValue
@@ -16,19 +16,25 @@ class EventNotifier<T>(private val initialValue: T) {
}
}
+ fun subscribe(id: Any, listener: (T) -> Unit) {
+ synchronized(this) {
+ listeners.put(id, listener)
+ listener(latestEvent)
+ }
+ }
+
fun subscribe(listener: (T) -> Unit): Int {
synchronized(this) {
val id = idCounter
idCounter += 1
- listeners.put(id, listener)
- listener(latestEvent)
+ subscribe(id, listener)
return id
}
}
- fun unsubscribe(id: Int) {
+ fun unsubscribe(id: Any) {
synchronized(this) {
listeners.remove(id)
}