diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-11-21 21:30:08 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-11-22 15:16:54 +0000 |
| commit | 4f1e40b8d09893a2c27455897256d7381d491e2b (patch) | |
| tree | 9f9e7e326dc768967d3622e0d169805a14b4b7af | |
| parent | 10c9f7ec94d24b883aad6eb8815d9611f8485d75 (diff) | |
| download | mullvadvpn-4f1e40b8d09893a2c27455897256d7381d491e2b.tar.xz mullvadvpn-4f1e40b8d09893a2c27455897256d7381d491e2b.zip | |
Derive `IntoJava` for `Relay`
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/model/Relay.kt | 5 | ||||
| -rw-r--r-- | mullvad-jni/src/into_java.rs | 25 | ||||
| -rw-r--r-- | mullvad-types/src/relay_list.rs | 7 |
3 files changed, 13 insertions, 24 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/model/Relay.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/Relay.kt index 01c2eb9481..f260baf6e2 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/model/Relay.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/Relay.kt @@ -1,3 +1,6 @@ package net.mullvad.mullvadvpn.model -data class Relay(val hostname: String, val hasWireguardTunnels: Boolean, val active: Boolean) +data class Relay(val hostname: String, val active: Boolean, val tunnels: RelayTunnels) { + val hasWireguardTunnels + get() = tunnels.wireguard.isEmpty() +} diff --git a/mullvad-jni/src/into_java.rs b/mullvad-jni/src/into_java.rs index a2e60034da..0f1f33035c 100644 --- a/mullvad-jni/src/into_java.rs +++ b/mullvad-jni/src/into_java.rs @@ -2,7 +2,7 @@ use crate::daemon_interface; use jnix::{ jni::{ objects::{AutoLocal, JList, JObject, JValue}, - sys::{jboolean, jint}, + sys::jint, }, JnixEnv, }; @@ -185,28 +185,7 @@ where } } -impl<'borrow, 'env> IntoJava<'borrow, 'env> for Relay -where - 'env: 'borrow, -{ - type JavaType = AutoLocal<'env, 'borrow>; - - fn into_java(self, env: &'borrow JnixEnv<'env>) -> Self::JavaType { - let class = env.get_class("net/mullvad/mullvadvpn/model/Relay"); - let hostname = self.hostname.into_java(env); - let has_wireguard_tunnels = (!self.tunnels.wireguard.is_empty()) as jboolean; - let parameters = [ - JValue::Object(hostname.as_obj()), - JValue::Bool(has_wireguard_tunnels), - JValue::Bool(self.active as jboolean), - ]; - - env.auto_local( - env.new_object(&class, "(Ljava/lang/String;ZZ)V", ¶meters) - .expect("Failed to create Relay Java object"), - ) - } -} +wrap_jnix_into_java!(Relay); impl<'borrow, 'env, T> IntoJava<'borrow, 'env> for Constraint<T> where diff --git a/mullvad-types/src/relay_list.rs b/mullvad-types/src/relay_list.rs index 0eef276761..229c822002 100644 --- a/mullvad-types/src/relay_list.rs +++ b/mullvad-types/src/relay_list.rs @@ -45,17 +45,24 @@ pub struct RelayListCity { } #[derive(Debug, Clone, Deserialize, Serialize)] +#[cfg_attr(target_os = "android", derive(IntoJava))] +#[cfg_attr(target_os = "android", jnix(package = "net.mullvad.mullvadvpn.model"))] pub struct Relay { pub hostname: String, + #[cfg_attr(target_os = "android", jnix(skip))] pub ipv4_addr_in: Ipv4Addr, + #[cfg_attr(target_os = "android", jnix(skip))] pub include_in_country: bool, pub active: bool, + #[cfg_attr(target_os = "android", jnix(skip))] pub weight: u64, #[serde(skip_serializing_if = "RelayTunnels::is_empty", default)] pub tunnels: RelayTunnels, #[serde(skip_serializing_if = "RelayBridges::is_empty", default)] + #[cfg_attr(target_os = "android", jnix(skip))] pub bridges: RelayBridges, #[serde(skip)] + #[cfg_attr(target_os = "android", jnix(skip))] pub location: Option<Location>, } |
