use jni::{objects::{JClass, JString}, sys::{jboolean, jlong}, JNIEnv}; use super::JExceptable; /// Calculate the XXH3 hash for a given String. #[no_mangle] pub extern "system" fn Java_mp_code_Extensions_hash<'local>( mut env: JNIEnv, _class: JClass<'local>, content: JString<'local>, ) -> jlong { let content: String = env.get_string(&content) .map(|s| s.into()) .jexcept(&mut env); let hash = crate::ext::hash(content.as_bytes()); i64::from_ne_bytes(hash.to_ne_bytes()) } /// Tells the [tokio] runtime how to drive the event loop. #[no_mangle] pub extern "system" fn Java_mp_code_Extensions_drive( _env: JNIEnv, _class: JClass, block: jboolean ) { if block != 0 { super::tokio().block_on(std::future::pending::<()>()); } else { std::thread::spawn(|| { super::tokio().block_on(std::future::pending::<()>()); }); } }