jvmti_rs/wrapper/metadata/
jthread_info.rs1use crate::{
2 objects::*,
3 stringify,
4};
5use crate::sys::jvmtiThreadInfo;
6use std::marker::PhantomData;
7use std::ptr;
8
9#[derive(Clone, Debug)]
10pub struct JThreadInfo<'a> {
11 internal: jvmtiThreadInfo,
12 lifetime: PhantomData<&'a ()>,
13
14 pub name: String,
15 pub priority: u32,
16 pub is_daemon: bool,
17 pub thread_group: JThreadGroupID<'a>,
18 pub context_class_loader: JObject<'a>,
19}
20
21impl<'a> JThreadInfo<'a> {
22 pub fn new(info: jvmtiThreadInfo) -> JThreadInfo<'a> {
23 JThreadInfo {
24 internal: info,
25 lifetime: PhantomData,
26
27 name: stringify(info.name),
28 priority: info.priority as u32,
29 is_daemon: if info.is_daemon > 0 { true } else { false },
30 thread_group: info.thread_group.into(),
31 context_class_loader: info.context_class_loader.into(),
32 }
33 }
34
35 pub fn empty_raw() -> jvmtiThreadInfo {
36 jvmtiThreadInfo {
37 name: ptr::null_mut(),
38 priority: 0,
39 is_daemon: 0,
40 thread_group: ptr::null_mut(),
41 context_class_loader: ptr::null_mut(),
42 }
43 }
44}
45
46impl<'a> ::std::ops::Deref for JThreadInfo<'a> {
47 type Target = jvmtiThreadInfo;
48
49 fn deref(&self) -> &Self::Target {
50 &self.internal
51 }
52}