summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-11-21 21:30:08 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-11-22 15:16:54 +0000
commit4f1e40b8d09893a2c27455897256d7381d491e2b (patch)
tree9f9e7e326dc768967d3622e0d169805a14b4b7af
parent10c9f7ec94d24b883aad6eb8815d9611f8485d75 (diff)
downloadmullvadvpn-4f1e40b8d09893a2c27455897256d7381d491e2b.tar.xz
mullvadvpn-4f1e40b8d09893a2c27455897256d7381d491e2b.zip
Derive `IntoJava` for `Relay`
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/model/Relay.kt5
-rw-r--r--mullvad-jni/src/into_java.rs25
-rw-r--r--mullvad-types/src/relay_list.rs7
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", &parameters)
- .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>,
}