summaryrefslogtreecommitdiffhomepage
path: root/mullvad-jni/src/into_java.rs
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-08-01 13:56:38 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-08-02 13:46:52 +0000
commita16dd1455d3ed87cd196fc718d2d8b1c53ba021e (patch)
tree37b5a9fbc1fd9aab07ba9d74bd7476c7ec2db6d5 /mullvad-jni/src/into_java.rs
parentaa64beb0ab9d1791660f4af6e9744332a2c76982 (diff)
downloadmullvadvpn-a16dd1455d3ed87cd196fc718d2d8b1c53ba021e.tar.xz
mullvadvpn-a16dd1455d3ed87cd196fc718d2d8b1c53ba021e.zip
Implement `IntoJava` for `SocketAddr`
Diffstat (limited to 'mullvad-jni/src/into_java.rs')
-rw-r--r--mullvad-jni/src/into_java.rs19
1 files changed, 18 insertions, 1 deletions
diff --git a/mullvad-jni/src/into_java.rs b/mullvad-jni/src/into_java.rs
index e51e9e036e..9998982532 100644
--- a/mullvad-jni/src/into_java.rs
+++ b/mullvad-jni/src/into_java.rs
@@ -17,7 +17,10 @@ use mullvad_types::{
wireguard::KeygenEvent,
CustomTunnelEndpoint,
};
-use std::{fmt::Debug, net::IpAddr};
+use std::{
+ fmt::Debug,
+ net::{IpAddr, SocketAddr},
+};
use talpid_core::tunnel::tun_provider::TunConfig;
use talpid_types::{
net::{wireguard::PublicKey, TransportProtocol},
@@ -161,6 +164,20 @@ impl<'env> IntoJava<'env> for IpAddr {
}
}
+impl<'env> IntoJava<'env> for SocketAddr {
+ type JavaType = JObject<'env>;
+
+ fn into_java(self, env: &JNIEnv<'env>) -> Self::JavaType {
+ let class = get_class("java/net/InetSocketAddress");
+ let ip_address = env.auto_local(self.ip().into_java(env));
+ let port = self.port() as jint;
+ let parameters = [JValue::Object(ip_address.as_obj()), JValue::Int(port)];
+
+ env.new_object(&class, "(Ljava/net/InetAddress;I)V", &parameters)
+ .expect("Failed to create InetSocketAddress Java object")
+ }
+}
+
impl<'env> IntoJava<'env> for IpNetwork {
type JavaType = JObject<'env>;