diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-03-16 20:38:42 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-03-18 13:31:35 +0000 |
| commit | 60caa15156eca56d5b79c6bbb04d5b4f8d009f83 (patch) | |
| tree | c427d2c95800bd4dba3cff85f5bed0e90d23c260 /android | |
| parent | b94272f83c2af3ec0657ced3758949dcb7c16081 (diff) | |
| download | mullvadvpn-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.kt | 48 |
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 + } + } + } } |
