summaryrefslogtreecommitdiffhomepage
path: root/mullvad-jni/src/into_java.rs
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-05-29 11:43:58 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-05-29 14:00:08 +0000
commiteebc252b9c9151c29976fef7b2cd0666ec443aba (patch)
tree2f8d9c14d26c098305468f8c050a8e392a85f1a9 /mullvad-jni/src/into_java.rs
parent7ba9a024a66f585c0b18b32333682da886b2ca9f (diff)
downloadmullvadvpn-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.rs20
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", &parameters)
+ .expect("Failed to create InetNetwork Java object")
+ }
+}
+
impl<'env> IntoJava<'env> for PublicKey {
type JavaType = JObject<'env>;