summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-03-16 20:38:42 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-03-18 13:31:35 +0000
commit60caa15156eca56d5b79c6bbb04d5b4f8d009f83 (patch)
treec427d2c95800bd4dba3cff85f5bed0e90d23c260 /android
parentb94272f83c2af3ec0657ced3758949dcb7c16081 (diff)
downloadmullvadvpn-60caa15156eca56d5b79c6bbb04d5b4f8d009f83.tar.xz
mullvadvpn-60caa15156eca56d5b79c6bbb04d5b4f8d009f83.zip
Allow representing a `TunnelState` by a `String`
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/model/TunnelState.kt48
1 files changed, 48 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/model/TunnelState.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/TunnelState.kt
index 556517720d..e4b67e2f1b 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/model/TunnelState.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/TunnelState.kt
@@ -3,6 +3,7 @@ package net.mullvad.mullvadvpn.model
import net.mullvad.talpid.net.TunnelEndpoint
import net.mullvad.talpid.tunnel.ActionAfterDisconnect
import net.mullvad.talpid.tunnel.ErrorState
+import net.mullvad.talpid.tunnel.ErrorStateCause
sealed class TunnelState() {
class Disconnected() : TunnelState()
@@ -10,4 +11,51 @@ sealed class TunnelState() {
class Connected(val endpoint: TunnelEndpoint, val location: GeoIpLocation?) : TunnelState()
class Disconnecting(val actionAfterDisconnect: ActionAfterDisconnect) : TunnelState()
class Error(val errorState: ErrorState) : TunnelState()
+
+ companion object {
+ const val DISCONNECTED = "disconnected"
+ const val CONNECTING = "connecting"
+ const val CONNECTED = "connected"
+ const val RECONNECTING = "reconnecting"
+ const val DISCONNECTING = "disconnecting"
+ const val BLOCKING = "blocking"
+ const val ERROR = "error"
+
+ fun fromString(description: String, endpoint: TunnelEndpoint?): TunnelState {
+ return when (description) {
+ DISCONNECTED -> TunnelState.Disconnected()
+ CONNECTING -> TunnelState.Connecting(endpoint, null)
+ CONNECTED -> TunnelState.Connected(endpoint!!, null)
+ RECONNECTING -> TunnelState.Disconnecting(ActionAfterDisconnect.Reconnect)
+ DISCONNECTING -> TunnelState.Disconnecting(ActionAfterDisconnect.Nothing)
+ BLOCKING -> TunnelState.Error(ErrorState(ErrorStateCause.StartTunnelError(), true))
+ ERROR -> {
+ TunnelState.Error(ErrorState(ErrorStateCause.SetFirewallPolicyError(), false))
+ }
+ else -> {
+ TunnelState.Error(ErrorState(ErrorStateCause.SetFirewallPolicyError(), false))
+ }
+ }
+ }
+ }
+
+ override fun toString() = when (this) {
+ is TunnelState.Disconnected -> DISCONNECTED
+ is TunnelState.Connecting -> CONNECTING
+ is TunnelState.Connected -> CONNECTED
+ is TunnelState.Disconnecting -> {
+ if (actionAfterDisconnect == ActionAfterDisconnect.Reconnect) {
+ RECONNECTING
+ } else {
+ DISCONNECTING
+ }
+ }
+ is TunnelState.Error -> {
+ if (errorState.isBlocking) {
+ BLOCKING
+ } else {
+ ERROR
+ }
+ }
+ }
}