summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-02-14 19:15:56 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-02-15 13:13:11 +0000
commita2a9f238a76c9bc24d291b0f0758851dda14005a (patch)
treef55b631ca4f0f2e95e13fa0e18ff90ecf693b675 /android/src
parent935f1205aa2cf5bf2d349b88822494b9d5b6faef (diff)
downloadmullvadvpn-a2a9f238a76c9bc24d291b0f0758851dda14005a.tar.xz
mullvadvpn-a2a9f238a76c9bc24d291b0f0758851dda14005a.zip
Implement `ConnectionProxy.reconnect()`
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt24
1 files changed, 24 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt
index 16b34b137d..e55c696a2b 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/ConnectionProxy.kt
@@ -66,6 +66,15 @@ class ConnectionProxy(val context: Context, val daemon: MullvadDaemon) {
}
}
+ fun reconnect() {
+ if (anticipateReconnectingState()) {
+ cancelActiveAction()
+ activeAction = GlobalScope.launch(Dispatchers.Default) {
+ daemon.reconnect()
+ }
+ }
+ }
+
fun disconnect() {
if (anticipateDisconnectingState()) {
cancelActiveAction()
@@ -103,6 +112,21 @@ class ConnectionProxy(val context: Context, val daemon: MullvadDaemon) {
}
}
+ private fun anticipateReconnectingState(): Boolean {
+ synchronized(this) {
+ val currentState = uiState
+
+ if (currentState is TunnelState.Disconnecting &&
+ currentState.actionAfterDisconnect == ActionAfterDisconnect.Reconnect) {
+ return false
+ } else {
+ scheduleToResetAnticipatedState()
+ uiState = TunnelState.Disconnecting(ActionAfterDisconnect.Reconnect)
+ return true
+ }
+ }
+ }
+
private fun anticipateDisconnectingState(): Boolean {
synchronized(this) {
val currentState = uiState