jvmti_rs/wrapper/enums/
thread_state.rs

1use crate::sys;
2
3#[derive(Debug)]
4pub enum JvmtiThreadState {
5    Alive,
6    Terminated,
7    Runnable,
8    BlockedOnMonitorEnter,
9    Waiting,
10    WaitingIndefinitely,
11    WaitingWithTimeout,
12    Sleeping,
13    InObjectWait,
14    Parked,
15    Suspended,
16    Interrupted,
17    InNative,
18    Vendor1,
19    Vendor2,
20    Vendor3,
21    Unsupported(sys::jvmtiThreadState),
22}
23
24impl From<sys::jvmtiThreadState> for JvmtiThreadState {
25    fn from(value: sys::jvmtiThreadState) -> Self {
26        match value {
27            sys::JVMTI_THREAD_STATE_ALIVE => JvmtiThreadState::Alive,
28            sys::JVMTI_THREAD_STATE_TERMINATED => JvmtiThreadState::Terminated,
29            sys::JVMTI_THREAD_STATE_RUNNABLE => JvmtiThreadState::Runnable,
30            sys::JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER => JvmtiThreadState::BlockedOnMonitorEnter,
31            sys::JVMTI_THREAD_STATE_WAITING => JvmtiThreadState::Waiting,
32            sys::JVMTI_THREAD_STATE_WAITING_INDEFINITELY => JvmtiThreadState::WaitingIndefinitely,
33            sys::JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT => JvmtiThreadState::WaitingWithTimeout,
34            sys::JVMTI_THREAD_STATE_SLEEPING => JvmtiThreadState::Sleeping,
35            sys::JVMTI_THREAD_STATE_IN_OBJECT_WAIT => JvmtiThreadState::InObjectWait,
36            sys::JVMTI_THREAD_STATE_PARKED => JvmtiThreadState::Parked,
37            sys::JVMTI_THREAD_STATE_SUSPENDED => JvmtiThreadState::Suspended,
38            sys::JVMTI_THREAD_STATE_INTERRUPTED => JvmtiThreadState::Interrupted,
39            sys::JVMTI_THREAD_STATE_IN_NATIVE => JvmtiThreadState::InNative,
40            sys::JVMTI_THREAD_STATE_VENDOR_1 => JvmtiThreadState::Vendor1,
41            sys::JVMTI_THREAD_STATE_VENDOR_2 => JvmtiThreadState::Vendor2,
42            sys::JVMTI_THREAD_STATE_VENDOR_3 => JvmtiThreadState::Vendor3,
43            _ => JvmtiThreadState::Unsupported(value)
44        }
45    }
46}
47
48impl From<JvmtiThreadState> for sys::jvmtiThreadState {
49    fn from(value: JvmtiThreadState) -> Self {
50        match value {
51            JvmtiThreadState::Alive => sys::JVMTI_THREAD_STATE_ALIVE,
52            JvmtiThreadState::Terminated => sys::JVMTI_THREAD_STATE_TERMINATED,
53            JvmtiThreadState::Runnable => sys::JVMTI_THREAD_STATE_RUNNABLE,
54            JvmtiThreadState::BlockedOnMonitorEnter => sys::JVMTI_THREAD_STATE_BLOCKED_ON_MONITOR_ENTER,
55            JvmtiThreadState::Waiting => sys::JVMTI_THREAD_STATE_WAITING,
56            JvmtiThreadState::WaitingIndefinitely => sys::JVMTI_THREAD_STATE_WAITING_INDEFINITELY,
57            JvmtiThreadState::WaitingWithTimeout => sys::JVMTI_THREAD_STATE_WAITING_WITH_TIMEOUT,
58            JvmtiThreadState::Sleeping => sys::JVMTI_THREAD_STATE_SLEEPING,
59            JvmtiThreadState::InObjectWait => sys::JVMTI_THREAD_STATE_IN_OBJECT_WAIT,
60            JvmtiThreadState::Parked => sys::JVMTI_THREAD_STATE_PARKED,
61            JvmtiThreadState::Suspended => sys::JVMTI_THREAD_STATE_SUSPENDED,
62            JvmtiThreadState::Interrupted => sys::JVMTI_THREAD_STATE_INTERRUPTED,
63            JvmtiThreadState::InNative => sys::JVMTI_THREAD_STATE_IN_NATIVE,
64            JvmtiThreadState::Vendor1 => sys::JVMTI_THREAD_STATE_VENDOR_1,
65            JvmtiThreadState::Vendor2 => sys::JVMTI_THREAD_STATE_VENDOR_2,
66            JvmtiThreadState::Vendor3 => sys::JVMTI_THREAD_STATE_VENDOR_3,
67            _ => sys::JVMTI_CONSTANT_UNSUPPORTED,
68        }
69    }
70}