summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-12-17 13:51:26 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-02-15 18:47:22 +0000
commitf64612f57220ce8bc4ca82632eb1981444c3fc30 (patch)
tree37f48c5af2d3f1488e2cf6d199f09b411fe3c5dd /android/src
parent286eda9150acc29615ae1f22c8ed798110900f11 (diff)
downloadmullvadvpn-f64612f57220ce8bc4ca82632eb1981444c3fc30.tar.xz
mullvadvpn-f64612f57220ce8bc4ca82632eb1981444c3fc30.zip
Allow registering event listener messengers
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Request.kt5
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/service/endpoint/ServiceEndpoint.kt8
2 files changed, 13 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Request.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Request.kt
index 92e9617781..47b613816b 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Request.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Request.kt
@@ -1,13 +1,18 @@
package net.mullvad.mullvadvpn.ipc
import android.os.Message as RawMessage
+import android.os.Messenger
import android.os.Parcelable
+import kotlinx.parcelize.Parcelize
// Requests that the service can handle
sealed class Request : Message(), Parcelable {
protected override val messageId = 2
protected override val messageKey = MESSAGE_KEY
+ @Parcelize
+ class RegisterListener(val listener: Messenger) : Request(), Parcelable
+
companion object {
private const val MESSAGE_KEY = "request"
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 3e289dcc6f..5fe38c9539 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
@@ -6,12 +6,20 @@ import net.mullvad.mullvadvpn.ipc.DispatchingHandler
import net.mullvad.mullvadvpn.ipc.Request
class ServiceEndpoint(looper: Looper) {
+ private val listeners = mutableSetOf<Messenger>()
+
internal val dispatcher = DispatchingHandler(looper) { message ->
Request.fromMessage(message)
}
val messenger = Messenger(dispatcher)
+ init {
+ dispatcher.registerHandler(Request.RegisterListener::class) { request ->
+ listeners.add(request.listener)
+ }
+ }
+
fun onDestroy() {
dispatcher.onDestroy()
}