diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-05-22 14:55:39 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-05-25 11:51:59 +0000 |
| commit | 45d1f2afcde9175039788354acc9a6b908cca153 (patch) | |
| tree | 876b2acbc324262b336e663676b250b64a7ecb90 /android/src | |
| parent | feda5f8ef53f2d8edcd0d35190dd1d281f657e2d (diff) | |
| download | mullvadvpn-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.kt | 14 |
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) } |
