summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--mullvad-jni/src/into_java.rs23
-rw-r--r--mullvad-jni/src/lib.rs1
2 files changed, 23 insertions, 1 deletions
diff --git a/mullvad-jni/src/into_java.rs b/mullvad-jni/src/into_java.rs
index 9998982532..045f7e6328 100644
--- a/mullvad-jni/src/into_java.rs
+++ b/mullvad-jni/src/into_java.rs
@@ -23,7 +23,7 @@ use std::{
};
use talpid_core::tunnel::tun_provider::TunConfig;
use talpid_types::{
- net::{wireguard::PublicKey, TransportProtocol},
+ net::{wireguard::PublicKey, Endpoint, TransportProtocol},
tunnel::{ActionAfterDisconnect, BlockReason},
};
@@ -284,6 +284,27 @@ impl<'env> IntoJava<'env> for TransportProtocol {
}
}
+impl<'env> IntoJava<'env> for Endpoint {
+ type JavaType = JObject<'env>;
+
+ fn into_java(self, env: &JNIEnv<'env>) -> Self::JavaType {
+ let class = get_class("net/mullvad/mullvadvpn/model/Endpoint");
+ let address = env.auto_local(self.address.into_java(env));
+ let protocol = env.auto_local(self.protocol.into_java(env));
+ let parameters = [
+ JValue::Object(address.as_obj()),
+ JValue::Object(protocol.as_obj()),
+ ];
+
+ env.new_object(
+ &class,
+ "(Ljava/net/InetSocketAddress;Lnet/mullvad/mullvadvpn/model/TransportProtocol;)V",
+ &parameters,
+ )
+ .expect("Failed to create Endpoint sub-class variant Java object")
+ }
+}
+
impl<'env> IntoJava<'env> for GeoIpLocation {
type JavaType = JObject<'env>;
diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs
index 0d69c2518b..05f77c40f7 100644
--- a/mullvad-jni/src/lib.rs
+++ b/mullvad-jni/src/lib.rs
@@ -49,6 +49,7 @@ const CLASSES_TO_LOAD: &[&str] = &[
"net/mullvad/mullvadvpn/model/AppVersionInfo",
"net/mullvad/mullvadvpn/model/Constraint$Any",
"net/mullvad/mullvadvpn/model/Constraint$Only",
+ "net/mullvad/mullvadvpn/model/Endpoint",
"net/mullvad/mullvadvpn/model/GeoIpLocation",
"net/mullvad/mullvadvpn/model/InetNetwork",
"net/mullvad/mullvadvpn/model/KeygenEvent$NewKey",