diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-05-29 11:43:58 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-05-29 14:00:08 +0000 |
| commit | eebc252b9c9151c29976fef7b2cd0666ec443aba (patch) | |
| tree | 2f8d9c14d26c098305468f8c050a8e392a85f1a9 /mullvad-jni/src/into_java.rs | |
| parent | 7ba9a024a66f585c0b18b32333682da886b2ca9f (diff) | |
| download | mullvadvpn-eebc252b9c9151c29976fef7b2cd0666ec443aba.tar.xz mullvadvpn-eebc252b9c9151c29976fef7b2cd0666ec443aba.zip | |
Implement `IntoJava` for `IpNetwork`
Diffstat (limited to 'mullvad-jni/src/into_java.rs')
| -rw-r--r-- | mullvad-jni/src/into_java.rs | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/mullvad-jni/src/into_java.rs b/mullvad-jni/src/into_java.rs index a67b42a5e7..ba88840715 100644 --- a/mullvad-jni/src/into_java.rs +++ b/mullvad-jni/src/into_java.rs @@ -1,8 +1,9 @@ use crate::get_class; +use ipnetwork::IpNetwork; use jni::{ objects::{JList, JObject, JString, JValue}, signature::JavaType, - sys::{jint, jsize}, + sys::{jint, jshort, jsize}, JNIEnv, }; use mullvad_types::{ @@ -145,6 +146,23 @@ impl<'env> IntoJava<'env> for IpAddr { } } +impl<'env> IntoJava<'env> for IpNetwork { + type JavaType = JObject<'env>; + + fn into_java(self, env: &JNIEnv<'env>) -> Self::JavaType { + let class = get_class("net/mullvad/mullvadvpn/model/InetNetwork"); + let address = env.auto_local(self.ip().into_java(env)); + let prefix_length = self.prefix() as jshort; + let parameters = [ + JValue::Object(address.as_obj()), + JValue::Short(prefix_length), + ]; + + env.new_object(&class, "(Ljava/net/InetAddress;S)V", ¶meters) + .expect("Failed to create InetNetwork Java object") + } +} + impl<'env> IntoJava<'env> for PublicKey { type JavaType = JObject<'env>; |
