diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-11-21 17:59:22 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-11-22 15:16:54 +0000 |
| commit | 31fe190e7a713ccce59562855e1242840576f9a0 (patch) | |
| tree | e848c33fa1b561f82342f0f4a259ed7e72c18fc2 | |
| parent | 3f87e2df6ccaa5ec86d5eaced0a7e979d786792b (diff) | |
| download | mullvadvpn-31fe190e7a713ccce59562855e1242840576f9a0.tar.xz mullvadvpn-31fe190e7a713ccce59562855e1242840576f9a0.zip | |
Derive `IntoJava` for `TransportProtocol`
| -rw-r--r-- | Cargo.lock | 1 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/LocationInfo.kt | 4 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/talpid/net/TransportProtocol.kt | 5 | ||||
| -rw-r--r-- | mullvad-jni/src/classes.rs | 3 | ||||
| -rw-r--r-- | mullvad-jni/src/into_java.rs | 21 | ||||
| -rw-r--r-- | talpid-types/Cargo.toml | 3 | ||||
| -rw-r--r-- | talpid-types/src/net/mod.rs | 4 |
7 files changed, 14 insertions, 27 deletions
diff --git a/Cargo.lock b/Cargo.lock index 89673ee767..5c6db6f0b8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2517,6 +2517,7 @@ dependencies = [ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "err-derive 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "ipnetwork 0.15.0 (registry+https://github.com/rust-lang/crates.io-index)", + "jnix 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", "x25519-dalek 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/LocationInfo.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/LocationInfo.kt index 9278bb315f..9210712365 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/LocationInfo.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/LocationInfo.kt @@ -99,8 +99,8 @@ class LocationInfo(val parentView: View, val context: Context) { private fun showInAddress(endpoint: Endpoint?) { if (endpoint != null) { val transportProtocol = when (endpoint.protocol) { - is TransportProtocol.Tcp -> context.getString(R.string.tcp) - is TransportProtocol.Udp -> context.getString(R.string.udp) + TransportProtocol.Tcp -> context.getString(R.string.tcp) + TransportProtocol.Udp -> context.getString(R.string.udp) } inAddress.text = context.getString( diff --git a/android/src/main/kotlin/net/mullvad/talpid/net/TransportProtocol.kt b/android/src/main/kotlin/net/mullvad/talpid/net/TransportProtocol.kt index d4372f54ed..013399dc52 100644 --- a/android/src/main/kotlin/net/mullvad/talpid/net/TransportProtocol.kt +++ b/android/src/main/kotlin/net/mullvad/talpid/net/TransportProtocol.kt @@ -1,6 +1,5 @@ package net.mullvad.talpid.net -sealed class TransportProtocol { - class Tcp : TransportProtocol() - class Udp : TransportProtocol() +enum class TransportProtocol { + Tcp, Udp } diff --git a/mullvad-jni/src/classes.rs b/mullvad-jni/src/classes.rs index 96e68722e6..3aa7d74e3e 100644 --- a/mullvad-jni/src/classes.rs +++ b/mullvad-jni/src/classes.rs @@ -37,8 +37,7 @@ pub const CLASSES: &[&str] = &[ "net/mullvad/mullvadvpn/MullvadDaemon", "net/mullvad/mullvadvpn/MullvadVpnService", "net/mullvad/talpid/net/Endpoint", - "net/mullvad/talpid/net/TransportProtocol$Tcp", - "net/mullvad/talpid/net/TransportProtocol$Udp", + "net/mullvad/talpid/net/TransportProtocol", "net/mullvad/talpid/net/TunnelEndpoint", "net/mullvad/talpid/tun_provider/InetNetwork", "net/mullvad/talpid/tun_provider/TunConfig", diff --git a/mullvad-jni/src/into_java.rs b/mullvad-jni/src/into_java.rs index 80f0afe424..870b3fb5b3 100644 --- a/mullvad-jni/src/into_java.rs +++ b/mullvad-jni/src/into_java.rs @@ -165,26 +165,7 @@ where wrap_jnix_into_java!(AccountData); wrap_jnix_into_java!(TunConfig); - -impl<'borrow, 'env> IntoJava<'borrow, 'env> for TransportProtocol -where - 'env: 'borrow, -{ - type JavaType = AutoLocal<'env, 'borrow>; - - fn into_java(self, env: &'borrow JnixEnv<'env>) -> Self::JavaType { - let class_name = match self { - TransportProtocol::Tcp => "net/mullvad/talpid/net/TransportProtocol$Tcp", - TransportProtocol::Udp => "net/mullvad/talpid/net/TransportProtocol$Udp", - }; - let class = env.get_class(class_name); - - env.auto_local( - env.new_object(&class, "()V", &[]) - .expect("Failed to create TransportProtocol sub-class variant Java object"), - ) - } -} +wrap_jnix_into_java!(TransportProtocol); impl<'borrow, 'env> IntoJava<'borrow, 'env> for Endpoint where diff --git a/talpid-types/Cargo.toml b/talpid-types/Cargo.toml index 0412c8f501..ff675eed0d 100644 --- a/talpid-types/Cargo.toml +++ b/talpid-types/Cargo.toml @@ -13,3 +13,6 @@ base64 = "0.10" x25519-dalek = { version = "0.5", features = [ "std", "u64_backend" ], default-features = false } rand = "0.7" err-derive = "0.2.1" + +[target.'cfg(target_os = "android")'.dependencies] +jnix = { version = "0.1", features = ["derive"] } diff --git a/talpid-types/src/net/mod.rs b/talpid-types/src/net/mod.rs index 9c57e7b393..3760700d20 100644 --- a/talpid-types/src/net/mod.rs +++ b/talpid-types/src/net/mod.rs @@ -1,3 +1,5 @@ +#[cfg(target_os = "android")] +use jnix::IntoJava; use serde::{Deserialize, Serialize}; use std::{ error::Error, @@ -130,6 +132,8 @@ impl fmt::Display for Endpoint { /// Representation of a transport protocol, either UDP or TCP. #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)] #[serde(rename_all = "snake_case")] +#[cfg_attr(target_os = "android", derive(IntoJava))] +#[cfg_attr(target_os = "android", jnix(package = "net.mullvad.talpid.net"))] pub enum TransportProtocol { /// Represents the UDP transport protocol. Udp, |
