jvmti_rs/wrapper/
vm.rs

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}