summaryrefslogtreecommitdiffhomepage
path: root/android/src/main
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-01-29 11:51:32 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-02-15 18:47:22 +0000
commitb6b2fa30e5f76a4ecfb13cc2323d147a5a7edf80 (patch)
tree4802e142d22029c82c360b13a2a98cb89a781756 /android/src/main
parentedc042a583aa914a7d8197dc7ee9fc4efd84e923 (diff)
downloadmullvadvpn-b6b2fa30e5f76a4ecfb13cc2323d147a5a7edf80.tar.xz
mullvadvpn-b6b2fa30e5f76a4ecfb13cc2323d147a5a7edf80.zip
Add method to send an event to all listeners
Diffstat (limited to 'android/src/main')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt17
1 files changed, 17 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt
index 239e701ae3..e401a116a8 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt
@@ -1,5 +1,6 @@
package net.mullvad.mullvadvpn.service.endpoint
+import android.os.DeadObjectException
import android.os.Looper
import android.os.Messenger
import net.mullvad.mullvadvpn.ipc.DispatchingHandler
@@ -25,6 +26,22 @@ class ServiceEndpoint(looper: Looper) {
dispatcher.onDestroy()
}
+ internal fun sendEvent(event: Event) {
+ synchronized(this) {
+ val deadListeners = mutableSetOf<Messenger>()
+
+ for (listener in listeners) {
+ try {
+ listener.send(event.message)
+ } catch (_: DeadObjectException) {
+ deadListeners.add(listener)
+ }
+ }
+
+ deadListeners.forEach { listeners.remove(it) }
+ }
+ }
+
private fun registerListener(listener: Messenger) {
synchronized(this) {
listeners.add(listener)