diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-08-01 13:56:38 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-08-02 13:46:52 +0000 |
| commit | a16dd1455d3ed87cd196fc718d2d8b1c53ba021e (patch) | |
| tree | 37b5a9fbc1fd9aab07ba9d74bd7476c7ec2db6d5 /mullvad-jni/src/into_java.rs | |
| parent | aa64beb0ab9d1791660f4af6e9744332a2c76982 (diff) | |
| download | mullvadvpn-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.rs | 19 |
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", ¶meters) + .expect("Failed to create InetSocketAddress Java object") + } +} + impl<'env> IntoJava<'env> for IpNetwork { type JavaType = JObject<'env>; |
