diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-01-29 11:50:28 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-02-15 18:47:22 +0000 |
| commit | edc042a583aa914a7d8197dc7ee9fc4efd84e923 (patch) | |
| tree | da6b217cc40221030de2cdd475fa8220408c78b7 /android/src/main | |
| parent | f64612f57220ce8bc4ca82632eb1981444c3fc30 (diff) | |
| download | mullvadvpn-edc042a583aa914a7d8197dc7ee9fc4efd84e923.tar.xz mullvadvpn-edc042a583aa914a7d8197dc7ee9fc4efd84e923.zip | |
Send an event when listener is registered
Diffstat (limited to 'android/src/main')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Event.kt | 20 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt | 15 |
2 files changed, 34 insertions, 1 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Event.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Event.kt new file mode 100644 index 0000000000..fa6aa22081 --- /dev/null +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Event.kt @@ -0,0 +1,20 @@ +package net.mullvad.mullvadvpn.ipc + +import android.os.Message as RawMessage +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +// Events that can be sent from the service +sealed class Event : Message(), Parcelable { + protected override val messageId = 1 + protected override val messageKey = MESSAGE_KEY + + @Parcelize + object ListenerReady : Event(), Parcelable + + companion object { + private const val MESSAGE_KEY = "event" + + fun fromMessage(message: RawMessage): Event? = Message.fromMessage(message, MESSAGE_KEY) + } +} 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 5fe38c9539..239e701ae3 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 @@ -3,6 +3,7 @@ package net.mullvad.mullvadvpn.service.endpoint import android.os.Looper import android.os.Messenger import net.mullvad.mullvadvpn.ipc.DispatchingHandler +import net.mullvad.mullvadvpn.ipc.Event import net.mullvad.mullvadvpn.ipc.Request class ServiceEndpoint(looper: Looper) { @@ -16,11 +17,23 @@ class ServiceEndpoint(looper: Looper) { init { dispatcher.registerHandler(Request.RegisterListener::class) { request -> - listeners.add(request.listener) + registerListener(request.listener) } } fun onDestroy() { dispatcher.onDestroy() } + + private fun registerListener(listener: Messenger) { + synchronized(this) { + listeners.add(listener) + + val initialEvents = listOf(Event.ListenerReady) + + initialEvents.forEach { event -> + listener.send(event.message) + } + } + } } |
