summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Message.kt25
1 files changed, 25 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Message.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Message.kt
new file mode 100644
index 0000000000..872acba8e7
--- /dev/null
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ipc/Message.kt
@@ -0,0 +1,25 @@
+package net.mullvad.mullvadvpn.ipc
+
+import android.os.Bundle
+import android.os.Message as RawMessage
+import android.os.Parcelable
+
+abstract class Message : Parcelable {
+ protected abstract val messageId: Int
+ protected abstract val messageKey: String
+
+ val message: RawMessage
+ get() = RawMessage.obtain().also { message ->
+ message.what = messageId
+ message.data = Bundle()
+ message.data.putParcelable(messageKey, this)
+ }
+
+ companion object {
+ internal fun <T : Parcelable> fromMessage(message: RawMessage, key: String): T? {
+ val data = message.data
+
+ return data.getParcelable(key)
+ }
+ }
+}