1pub use jni::JavaVM;
2use std::ptr;
3
4use crate::errors::*;
5use crate::{sys, JVMTIEnv};
6
7pub trait Jvmti {
8 fn get_jvmti_env(&self) -> Result<JVMTIEnv>;
9}
10
11impl Jvmti for JavaVM {
12 fn get_jvmti_env(&self) -> Result<JVMTIEnv> {
13 let mut ptr = ptr::null_mut();
14 unsafe {
15 let res = java_vm_unchecked!(self.get_java_vm_pointer(), GetEnv, &mut ptr, sys::JVMTI_VERSION);
16 jvmti_error_code_to_result(res as sys::jvmtiError)?;
17
18 JVMTIEnv::from_raw(ptr as *mut sys::jvmtiEnv)
19 }
20 }
21}