summaryrefslogtreecommitdiffhomepage
path: root/android/src/main
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-01-29 11:50:28 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-02-15 18:47:22 +0000
commitedc042a583aa914a7d8197dc7ee9fc4efd84e923 (patch)
treeda6b217cc40221030de2cdd475fa8220408c78b7 /android/src/main
parentf64612f57220ce8bc4ca82632eb1981444c3fc30 (diff)
downloadmullvadvpn-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.kt20
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt15
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)
+ }
+ }
+ }
}