diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-05-22 19:46:57 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-05-23 10:30:24 +0000 |
| commit | 59d30ebca8fa3261bad2a9eb8d15a4e9871f07b4 (patch) | |
| tree | a92e71938a11ab65dcead714d4cdcc815be816b9 /mullvad-jni/src/from_java.rs | |
| parent | 964635fa85310e00c7dbff6f2f34b571c823c9eb (diff) | |
| download | mullvadvpn-59d30ebca8fa3261bad2a9eb8d15a4e9871f07b4.tar.xz mullvadvpn-59d30ebca8fa3261bad2a9eb8d15a4e9871f07b4.zip | |
Implement `FromJava` for `RelaySettingsUpdate`
Diffstat (limited to 'mullvad-jni/src/from_java.rs')
| -rw-r--r-- | mullvad-jni/src/from_java.rs | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/mullvad-jni/src/from_java.rs b/mullvad-jni/src/from_java.rs index dde51cc74a..3acd9717ef 100644 --- a/mullvad-jni/src/from_java.rs +++ b/mullvad-jni/src/from_java.rs @@ -3,7 +3,9 @@ use jni::{ objects::{JObject, JString}, JNIEnv, }; -use mullvad_types::relay_constraints::{Constraint, LocationConstraint, RelayConstraintsUpdate}; +use mullvad_types::relay_constraints::{ + Constraint, LocationConstraint, RelayConstraintsUpdate, RelaySettingsUpdate, +}; use std::fmt::Debug; pub trait FromJava<'env> { @@ -113,6 +115,25 @@ impl<'env> FromJava<'env> for RelayConstraintsUpdate { } } +impl<'env> FromJava<'env> for RelaySettingsUpdate { + type JavaType = JObject<'env>; + + fn from_java(env: &JNIEnv<'env>, source: Self::JavaType) -> Self { + let custom_tunnel_endpoint_class = + "net/mullvad/mullvadvpn/model/RelaySettingsUpdate$CustomTunnelEndpoint"; + let relay_constraints_update_class = + "net/mullvad/mullvadvpn/model/RelaySettingsUpdate$RelayConstraintsUpdate"; + + if is_instance_of(env, source, custom_tunnel_endpoint_class) { + unimplemented!("Can't specify custom tunnels from Android app"); + } else if is_instance_of(env, source, relay_constraints_update_class) { + RelaySettingsUpdate::Normal(RelayConstraintsUpdate::from_java(env, source)) + } else { + panic!("Invalid RelaySettingsUpdate Java sub-class"); + } + } +} + fn is_instance_of<'env>( env: &JNIEnv<'env>, object: JObject<'env>, |
