diff options
| -rw-r--r-- | mullvad-cli/src/cmds/status.rs | 6 | ||||
| -rw-r--r-- | mullvad-daemon/src/lib.rs | 6 | ||||
| -rw-r--r-- | mullvad-jni/src/into_java.rs | 10 | ||||
| -rw-r--r-- | mullvad-types/src/states.rs | 28 |
4 files changed, 36 insertions, 14 deletions
diff --git a/mullvad-cli/src/cmds/status.rs b/mullvad-cli/src/cmds/status.rs index b1a51e2719..9f0b447673 100644 --- a/mullvad-cli/src/cmds/status.rs +++ b/mullvad-cli/src/cmds/status.rs @@ -2,7 +2,7 @@ use crate::{new_rpc_client, Command, Error, Result}; use futures::{Future, Stream}; use mullvad_ipc_client::DaemonRpcClient; use mullvad_types::{auth_failed::AuthFailed, states::TunnelState, DaemonEvent}; -use talpid_types::tunnel::{BlockReason, TunnelStateTransition}; +use talpid_types::tunnel::BlockReason; pub struct Status; @@ -41,7 +41,7 @@ impl Command for Status { match event? { DaemonEvent::StateTransition(new_state) => { print_state(&new_state); - use self::TunnelStateTransition::*; + use self::TunnelState::*; match new_state { Connected(_) | Disconnected => print_location(&mut rpc)?, _ => {} @@ -70,7 +70,7 @@ impl Command for Status { } fn print_state(state: &TunnelState) { - use self::TunnelStateTransition::*; + use self::TunnelState::*; print!("Tunnel status: "); match state { Blocked(reason) => print_blocked_reason(reason), diff --git a/mullvad-daemon/src/lib.rs b/mullvad-daemon/src/lib.rs index b2239cf7fd..eacb9a2197 100644 --- a/mullvad-daemon/src/lib.rs +++ b/mullvad-daemon/src/lib.rs @@ -152,7 +152,7 @@ impl DaemonExecutionState { match self { Running => { match tunnel_state { - TunnelStateTransition::Disconnected => mem::replace(self, Finished), + TunnelState::Disconnected => mem::replace(self, Finished), _ => mem::replace(self, Exiting), }; } @@ -388,7 +388,7 @@ where let mut daemon = Daemon { tunnel_command_tx: Sink::wait(tunnel_command_tx), - tunnel_state: TunnelStateTransition::Disconnected, + tunnel_state: TunnelState::Disconnected, target_state: TargetState::Unsecured, state: DaemonExecutionState::Running, rx: internal_event_rx, @@ -779,7 +779,7 @@ where } fn on_get_current_location(&self, tx: oneshot::Sender<Option<GeoIpLocation>>) { - use self::TunnelStateTransition::*; + use self::TunnelState::*; let get_location: Box<dyn Future<Item = Option<GeoIpLocation>, Error = ()> + Send> = match self.tunnel_state { Disconnected => Box::new(self.get_geo_location().map(Some)), diff --git a/mullvad-jni/src/into_java.rs b/mullvad-jni/src/into_java.rs index b08c555ee0..359c4466f6 100644 --- a/mullvad-jni/src/into_java.rs +++ b/mullvad-jni/src/into_java.rs @@ -466,11 +466,11 @@ impl<'env> IntoJava<'env> for TunnelState { fn into_java(self, env: &JNIEnv<'env>) -> Self::JavaType { let variant = match self { - TunnelStateTransition::Disconnected => "Disconnected", - TunnelStateTransition::Connecting(_) => "Connecting", - TunnelStateTransition::Connected(_) => "Connected", - TunnelStateTransition::Disconnecting(_) => "Disconnecting", - TunnelStateTransition::Blocked(_) => "Blocked", + TunnelState::Disconnected => "Disconnected", + TunnelState::Connecting(_) => "Connecting", + TunnelState::Connected(_) => "Connected", + TunnelState::Disconnecting(_) => "Disconnecting", + TunnelState::Blocked(_) => "Blocked", }; let class = get_class(&format!( diff --git a/mullvad-types/src/states.rs b/mullvad-types/src/states.rs index e7f7467660..77ef24fd7f 100644 --- a/mullvad-types/src/states.rs +++ b/mullvad-types/src/states.rs @@ -1,5 +1,8 @@ use serde::{Deserialize, Serialize}; -use talpid_types::tunnel::TunnelStateTransition; +use talpid_types::{ + net::TunnelEndpoint, + tunnel::{ActionAfterDisconnect, BlockReason}, +}; /// Represents the state the client strives towards. /// When in `Secured`, the client should keep the computer from leaking and try to @@ -11,5 +14,24 @@ pub enum TargetState { Secured, } -/// Temporary alias used to migrate the usages. -pub type TunnelState = TunnelStateTransition; +/// Represents the state the client tunnel is in. +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +#[serde(tag = "state", content = "details")] +pub enum TunnelState { + Disconnected, + Connecting(TunnelEndpoint), + Connected(TunnelEndpoint), + Disconnecting(ActionAfterDisconnect), + Blocked(BlockReason), +} + +impl TunnelState { + /// Returns true if the tunnel state is the blocked state. + pub fn is_blocked(&self) -> bool { + match self { + TunnelState::Blocked(_) => true, + _ => false, + } + } +} |
