jvmti_rs/wrapper/enums/
event.rs

1use crate::sys;
2
3#[derive(Debug, Clone, Copy)]
4pub enum JvmtiEvent {
5    VmInit,
6    VmDeath,
7    ThreadStart,
8    ThreadEnd,
9    ClassFileLoadHook,
10    ClassLoad,
11    ClassPrepare,
12    VmStart,
13    Exception,
14    ExceptionCatch,
15    SingleStep,
16    FramePop,
17    Breakpoint,
18    FieldAccess,
19    FieldModification,
20    MethodEntry,
21    MethodExit,
22    NativeMethodBind,
23    CompiledMethodLoad,
24    CompiledMethodUnload,
25    DynamicCodeGenerated,
26    DataDumpRequest,
27    MonitorWait,
28    MonitorWaited,
29    MonitorContendedEnter,
30    MonitorContendedEntered,
31    ResourceExhausted,
32    GarbageCollectionStart,
33    GarbageCollectionFinish,
34    ObjectFree,
35    VmObjectAlloc,
36    Unsupported,
37}
38
39impl From<JvmtiEvent> for sys::jvmtiEvent {
40    fn from(value: JvmtiEvent) -> Self {
41        match value {
42            JvmtiEvent::VmInit => sys::JVMTI_EVENT_VM_INIT,
43            JvmtiEvent::VmDeath => sys::JVMTI_EVENT_VM_DEATH,
44            JvmtiEvent::ThreadStart => sys::JVMTI_EVENT_THREAD_START,
45            JvmtiEvent::ThreadEnd => sys::JVMTI_EVENT_THREAD_END,
46            JvmtiEvent::ClassFileLoadHook => sys::JVMTI_EVENT_CLASS_FILE_LOAD_HOOK,
47            JvmtiEvent::ClassLoad => sys::JVMTI_EVENT_CLASS_LOAD,
48            JvmtiEvent::ClassPrepare => sys::JVMTI_EVENT_CLASS_PREPARE,
49            JvmtiEvent::VmStart => sys::JVMTI_EVENT_VM_START,
50            JvmtiEvent::Exception => sys::JVMTI_EVENT_EXCEPTION,
51            JvmtiEvent::ExceptionCatch => sys::JVMTI_EVENT_EXCEPTION_CATCH,
52            JvmtiEvent::SingleStep => sys::JVMTI_EVENT_SINGLE_STEP,
53            JvmtiEvent::FramePop => sys::JVMTI_EVENT_FRAME_POP,
54            JvmtiEvent::Breakpoint => sys::JVMTI_EVENT_BREAKPOINT,
55            JvmtiEvent::FieldAccess => sys::JVMTI_EVENT_FIELD_ACCESS,
56            JvmtiEvent::FieldModification => sys::JVMTI_EVENT_FIELD_MODIFICATION,
57            JvmtiEvent::MethodEntry => sys::JVMTI_EVENT_METHOD_ENTRY,
58            JvmtiEvent::MethodExit => sys::JVMTI_EVENT_METHOD_EXIT,
59            JvmtiEvent::NativeMethodBind => sys::JVMTI_EVENT_NATIVE_METHOD_BIND,
60            JvmtiEvent::CompiledMethodLoad => sys::JVMTI_EVENT_COMPILED_METHOD_LOAD,
61            JvmtiEvent::CompiledMethodUnload => sys::JVMTI_EVENT_COMPILED_METHOD_UNLOAD,
62            JvmtiEvent::DynamicCodeGenerated => sys::JVMTI_EVENT_DYNAMIC_CODE_GENERATED,
63            JvmtiEvent::DataDumpRequest => sys::JVMTI_EVENT_DATA_DUMP_REQUEST,
64            JvmtiEvent::MonitorWait => sys::JVMTI_EVENT_MONITOR_WAIT,
65            JvmtiEvent::MonitorWaited => sys::JVMTI_EVENT_MONITOR_WAITED,
66            JvmtiEvent::MonitorContendedEnter => sys::JVMTI_EVENT_MONITOR_CONTENDED_ENTER,
67            JvmtiEvent::MonitorContendedEntered => sys::JVMTI_EVENT_MONITOR_CONTENDED_ENTERED,
68            JvmtiEvent::ResourceExhausted => sys::JVMTI_EVENT_RESOURCE_EXHAUSTED,
69            JvmtiEvent::GarbageCollectionStart => sys::JVMTI_EVENT_GARBAGE_COLLECTION_START,
70            JvmtiEvent::GarbageCollectionFinish => sys::JVMTI_EVENT_GARBAGE_COLLECTION_FINISH,
71            JvmtiEvent::ObjectFree => sys::JVMTI_EVENT_OBJECT_FREE,
72            JvmtiEvent::VmObjectAlloc => sys::JVMTI_EVENT_VM_OBJECT_ALLOC,
73            _ => sys::JVMTI_CONSTANT_UNSUPPORTED,
74        }
75    }
76}
77
78impl From<sys::jvmtiEvent> for JvmtiEvent {
79    fn from(value: sys::jvmtiEvent) -> Self {
80        match value {
81            sys::JVMTI_EVENT_VM_INIT => JvmtiEvent::VmInit,
82            sys::JVMTI_EVENT_VM_DEATH => JvmtiEvent::VmDeath,
83            sys::JVMTI_EVENT_THREAD_START => JvmtiEvent::ThreadStart,
84            sys::JVMTI_EVENT_THREAD_END => JvmtiEvent::ThreadEnd,
85            sys::JVMTI_EVENT_CLASS_FILE_LOAD_HOOK => JvmtiEvent::ClassFileLoadHook,
86            sys::JVMTI_EVENT_CLASS_LOAD => JvmtiEvent::ClassLoad,
87            sys::JVMTI_EVENT_CLASS_PREPARE => JvmtiEvent::ClassPrepare,
88            sys::JVMTI_EVENT_VM_START => JvmtiEvent::VmStart,
89            sys::JVMTI_EVENT_EXCEPTION => JvmtiEvent::Exception,
90            sys::JVMTI_EVENT_EXCEPTION_CATCH => JvmtiEvent::ExceptionCatch,
91            sys::JVMTI_EVENT_SINGLE_STEP => JvmtiEvent::SingleStep,
92            sys::JVMTI_EVENT_FRAME_POP => JvmtiEvent::FramePop,
93            sys::JVMTI_EVENT_BREAKPOINT => JvmtiEvent::Breakpoint,
94            sys::JVMTI_EVENT_FIELD_ACCESS => JvmtiEvent::FieldAccess,
95            sys::JVMTI_EVENT_FIELD_MODIFICATION => JvmtiEvent::FieldModification,
96            sys::JVMTI_EVENT_METHOD_ENTRY => JvmtiEvent::MethodEntry,
97            sys::JVMTI_EVENT_METHOD_EXIT => JvmtiEvent::MethodExit,
98            sys::JVMTI_EVENT_NATIVE_METHOD_BIND => JvmtiEvent::NativeMethodBind,
99            sys::JVMTI_EVENT_COMPILED_METHOD_LOAD => JvmtiEvent::CompiledMethodLoad,
100            sys::JVMTI_EVENT_COMPILED_METHOD_UNLOAD => JvmtiEvent::CompiledMethodUnload,
101            sys::JVMTI_EVENT_DYNAMIC_CODE_GENERATED => JvmtiEvent::DynamicCodeGenerated,
102            sys::JVMTI_EVENT_DATA_DUMP_REQUEST => JvmtiEvent::DataDumpRequest,
103            sys::JVMTI_EVENT_MONITOR_WAIT => JvmtiEvent::MonitorWait,
104            sys::JVMTI_EVENT_MONITOR_WAITED => JvmtiEvent::MonitorWaited,
105            sys::JVMTI_EVENT_MONITOR_CONTENDED_ENTER => JvmtiEvent::MonitorContendedEnter,
106            sys::JVMTI_EVENT_MONITOR_CONTENDED_ENTERED => JvmtiEvent::MonitorContendedEntered,
107            sys::JVMTI_EVENT_RESOURCE_EXHAUSTED => JvmtiEvent::ResourceExhausted,
108            sys::JVMTI_EVENT_GARBAGE_COLLECTION_START => JvmtiEvent::GarbageCollectionStart,
109            sys::JVMTI_EVENT_GARBAGE_COLLECTION_FINISH => JvmtiEvent::GarbageCollectionFinish,
110            sys::JVMTI_EVENT_OBJECT_FREE => JvmtiEvent::ObjectFree,
111            sys::JVMTI_EVENT_VM_OBJECT_ALLOC => JvmtiEvent::VmObjectAlloc,
112            _ => JvmtiEvent::Unsupported,
113        }
114    }
115}