summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-01-05 00:30:43 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-04-12 13:19:37 +0000
commitbf57a7a1b4b31a0be7192401b38eeab542e68162 (patch)
treea162270582e1b01265f10b2321222151adef3483 /android/src
parent4d04861d45a489a7c19b0c04003b89b9e75c95c8 (diff)
downloadmullvadvpn-bf57a7a1b4b31a0be7192401b38eeab542e68162.tar.xz
mullvadvpn-bf57a7a1b4b31a0be7192401b38eeab542e68162.zip
Create UI-side `ConnectionProxy`
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ConnectionProxy.kt34
1 files changed, 34 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ConnectionProxy.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ConnectionProxy.kt
new file mode 100644
index 0000000000..c34983ae03
--- /dev/null
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/serviceconnection/ConnectionProxy.kt
@@ -0,0 +1,34 @@
+package net.mullvad.mullvadvpn.ui.serviceconnection
+
+import android.os.Messenger
+import net.mullvad.mullvadvpn.ipc.DispatchingHandler
+import net.mullvad.mullvadvpn.ipc.Event
+import net.mullvad.mullvadvpn.ipc.Request
+import net.mullvad.mullvadvpn.model.TunnelState
+import net.mullvad.talpid.util.EventNotifier
+
+class ConnectionProxy(val connection: Messenger, eventDispatcher: DispatchingHandler<Event>) {
+ val onStateChange = EventNotifier<TunnelState>(TunnelState.Disconnected)
+
+ init {
+ eventDispatcher.registerHandler(Event.TunnelStateChange::class) { event ->
+ onStateChange.notify(event.tunnelState)
+ }
+ }
+
+ fun connect() {
+ connection.send(Request.Connect.message)
+ }
+
+ fun disconnect() {
+ connection.send(Request.Disconnect.message)
+ }
+
+ fun reconnect() {
+ connection.send(Request.Reconnect.message)
+ }
+
+ fun onDestroy() {
+ onStateChange.unsubscribeAll()
+ }
+}