summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-11-21 17:59:22 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-11-22 15:16:54 +0000
commit31fe190e7a713ccce59562855e1242840576f9a0 (patch)
treee848c33fa1b561f82342f0f4a259ed7e72c18fc2
parent3f87e2df6ccaa5ec86d5eaced0a7e979d786792b (diff)
downloadmullvadvpn-31fe190e7a713ccce59562855e1242840576f9a0.tar.xz
mullvadvpn-31fe190e7a713ccce59562855e1242840576f9a0.zip
Derive `IntoJava` for `TransportProtocol`
-rw-r--r--Cargo.lock1
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/LocationInfo.kt4
-rw-r--r--android/src/main/kotlin/net/mullvad/talpid/net/TransportProtocol.kt5
-rw-r--r--mullvad-jni/src/classes.rs3
-rw-r--r--mullvad-jni/src/into_java.rs21
-rw-r--r--talpid-types/Cargo.toml3
-rw-r--r--talpid-types/src/net/mod.rs4
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,