diff options
Diffstat (limited to 'android/src/main')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt | 17 |
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) |
