Skip to content

Commit

Permalink
WIP: Manual IntoJava impl
Browse files Browse the repository at this point in the history
  • Loading branch information
Serock3 committed Jan 17, 2024
1 parent 6eee494 commit 5c1219b
Showing 1 changed file with 131 additions and 0 deletions.
131 changes: 131 additions & 0 deletions mullvad-types/src/states.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,3 +67,134 @@ impl TunnelState {
matches!(self, TunnelState::Disconnected { .. })
}
}

// #[cfg(target_os = "android")]
impl<'borrow, 'env> jnix::IntoJava<'borrow, 'env> for TunnelState
where
'env: 'borrow,
{
const JNI_SIGNATURE: &'static str = "Lnet/mullvad/mullvadvpn/model/TunnelState;";
type JavaType = jnix::jni::objects::AutoLocal<'env, 'borrow>;
#[allow(non_snake_case)]
fn into_java(self, env: &'borrow jnix::JnixEnv<'env>) -> Self::JavaType {
match self {
Self::Disconnected(_0) => {
let _source__0 = _0;
let _converted__0 = _source__0;
let _signature__0 = _converted__0.jni_signature();
let _final__0 = _converted__0.into_java(env);
let mut constructor_signature =
String::with_capacity(1 + _signature__0.as_bytes().len() + 2);
constructor_signature.push_str("(");
constructor_signature.push_str(_signature__0);
constructor_signature.push_str(")V");
let parameters = [jnix::AsJValue::as_jvalue(&_final__0)];
let class = env.get_class("net/mullvad/mullvadvpn/model/TunnelState$Disconnected");
let object = env
.new_object(&class, constructor_signature, &parameters)
.expect(
"Failed to convert TunnelState::Disconnected Rust type into net.mullvad.mullvadvpn.model.TunnelState.Disconnected Java object",
);
env.auto_local(object)
}
Self::Connecting { endpoint, location } => {
let _source_endpoint = endpoint;
let _source_location = location;
let _converted_endpoint = _source_endpoint;
let _signature_endpoint = _converted_endpoint.jni_signature();
let _final_endpoint = _converted_endpoint.into_java(env);
let _converted_location = _source_location;
let _signature_location = _converted_location.jni_signature();
let _final_location = _converted_location.into_java(env);
let mut constructor_signature = String::with_capacity(
1 + _signature_endpoint.as_bytes().len()
+ _signature_location.as_bytes().len()
+ 2,
);
constructor_signature.push_str("(");
constructor_signature.push_str(_signature_endpoint);
constructor_signature.push_str(_signature_location);
constructor_signature.push_str(")V");
let parameters = [
jnix::AsJValue::as_jvalue(&_final_endpoint),
jnix::AsJValue::as_jvalue(&_final_location),
];
let class = env.get_class("net/mullvad/mullvadvpn/model/TunnelState$Connecting");
let object = env
.new_object(&class, constructor_signature, &parameters)
.expect(
"Failed to convert TunnelState::Connecting Rust type into net.mullvad.mullvadvpn.model.TunnelState.Connecting Java object",
);
env.auto_local(object)
}
Self::Connected { endpoint, location } => {
let _source_endpoint = endpoint;
let _source_location = location;
let _converted_endpoint = _source_endpoint;
let _signature_endpoint = _converted_endpoint.jni_signature();
let _final_endpoint = _converted_endpoint.into_java(env);
let _converted_location = _source_location;
let _signature_location = _converted_location.jni_signature();
let _final_location = _converted_location.into_java(env);
let mut constructor_signature = String::with_capacity(
1 + _signature_endpoint.as_bytes().len()
+ _signature_location.as_bytes().len()
+ 2,
);
constructor_signature.push_str("(");
constructor_signature.push_str(_signature_endpoint);
constructor_signature.push_str(_signature_location);
constructor_signature.push_str(")V");
let parameters = [
jnix::AsJValue::as_jvalue(&_final_endpoint),
jnix::AsJValue::as_jvalue(&_final_location),
];
let class = env.get_class("net/mullvad/mullvadvpn/model/TunnelState$Connected");
let object = env
.new_object(&class, constructor_signature, &parameters)
.expect(
"Failed to convert TunnelState::Connected Rust type into net.mullvad.mullvadvpn.model.TunnelState.Connected Java object",
);
env.auto_local(object)
}
Self::Disconnecting(_0) => {
let _source__0 = _0;
let _converted__0 = _source__0;
let _signature__0 = _converted__0.jni_signature();
let _final__0 = _converted__0.into_java(env);
let mut constructor_signature =
String::with_capacity(1 + _signature__0.as_bytes().len() + 2);
constructor_signature.push_str("(");
constructor_signature.push_str(_signature__0);
constructor_signature.push_str(")V");
let parameters = [jnix::AsJValue::as_jvalue(&_final__0)];
let class = env.get_class("net/mullvad/mullvadvpn/model/TunnelState$Disconnecting");
let object = env
.new_object(&class, constructor_signature, &parameters)
.expect(
"Failed to convert TunnelState::Disconnecting Rust type into net.mullvad.mullvadvpn.model.TunnelState.Disconnecting Java object",
);
env.auto_local(object)
}
Self::Error(_0) => {
let _source__0 = _0;
let _converted__0 = _source__0;
let _signature__0 = _converted__0.jni_signature();
let _final__0 = _converted__0.into_java(env);
let mut constructor_signature =
String::with_capacity(1 + _signature__0.as_bytes().len() + 2);
constructor_signature.push_str("(");
constructor_signature.push_str(_signature__0);
constructor_signature.push_str(")V");
let parameters = [jnix::AsJValue::as_jvalue(&_final__0)];
let class = env.get_class("net/mullvad/mullvadvpn/model/TunnelState$Error");
let object = env
.new_object(&class, constructor_signature, &parameters)
.expect(
"Failed to convert TunnelState::Error Rust type into net.mullvad.mullvadvpn.model.TunnelState.Error Java object",
);
env.auto_local(object)
}
}
}
}

0 comments on commit 5c1219b

Please sign in to comment.