jvmti_rs/wrapper/event/
handler.rs

1use crate::event::*;
2
3#[derive(Clone, Copy)]
4pub struct EventHandlers {
5    pub class_prepare: EventClassPrepareFn,
6    pub breakpoint: EventBreakpointFn,
7    pub class_file_load_hook: EventClassFileLoadHookFn,
8    pub class_load: EventClassLoadFn,
9    pub compiled_method_load: CompiledMethodLoadFn,
10    pub compiled_method_unload: CompiledMethodUnloadFn,
11    pub data_dump_request: DataDumpRequestFn,
12    pub dynamic_code_generated: DynamicCodeGeneratedFn,
13    pub exception: ExceptionFn,
14    pub exception_catch: ExceptionCatchFn,
15    pub field_access: FieldAccessFn,
16    pub field_modification: FieldModificationFn,
17    pub frame_pop: FramePopFn,
18    pub garbage_collection_finish: GarbageCollectionFinishFn,
19    pub garbage_collection_start: GarbageCollectionStartFn,
20    pub method_entry: MethodEntryFn,
21    pub method_exit: MethodExitFn,
22    pub monitor_contended_enter: MonitorContendedEnterFn,
23    pub monitor_contended_entered: MonitorContendedEnteredFn,
24    pub monitor_wait: MonitorWaitFn,
25    pub monitor_waited: MonitorWaitedFn,
26    pub native_method_bind: NativeMethodBindFn,
27    pub object_free: ObjectFreeFn,
28    pub resource_exhausted: ResourceExhaustedFn,
29    pub single_step: SingleStepFn,
30    pub thread_end: ThreadEndFn,
31    pub thread_start: ThreadStartFn,
32    pub vm_death: VmDeathFn,
33    pub vm_init: VmInitFn,
34    pub vm_object_alloc: VmObjectAllocFn,
35    pub vm_start: VmStartFn,
36}
37
38impl EventHandlers {
39    pub fn new() -> EventHandlers {
40        empty_event_handlers!()
41    }
42
43    pub fn set_breakpoint(&mut self, event: EventBreakpointFn) { self.breakpoint = event }
44    pub fn set_class_file_load_hook(&mut self, event: EventClassFileLoadHookFn) { self.class_file_load_hook = event }
45    pub fn set_class_load(&mut self, event: EventClassLoadFn) { self.class_load = event }
46    pub fn set_class_prepare(&mut self, event: EventClassPrepareFn) { self.class_prepare = event }
47    pub fn set_compiled_method_load(&mut self, event: CompiledMethodLoadFn) { self.compiled_method_load = event }
48    pub fn set_compiled_method_unload(&mut self, event: CompiledMethodUnloadFn) { self.compiled_method_unload = event }
49    pub fn set_data_dump_request(&mut self, event: DataDumpRequestFn) { self.data_dump_request = event }
50    pub fn set_dynamic_code_generated(&mut self, event: DynamicCodeGeneratedFn) { self.dynamic_code_generated = event }
51    pub fn set_exception(&mut self, event: ExceptionFn) { self.exception = event }
52    pub fn set_exception_catch(&mut self, event: ExceptionCatchFn) { self.exception_catch = event }
53    pub fn set_field_access(&mut self, event: FieldAccessFn) { self.field_access = event }
54    pub fn set_field_modification(&mut self, event: FieldModificationFn) { self.field_modification = event }
55    pub fn set_frame_pop(&mut self, event: FramePopFn) { self.frame_pop = event }
56    pub fn set_garbage_collection_finish(&mut self, event: GarbageCollectionFinishFn) { self.garbage_collection_finish = event }
57    pub fn set_garbage_collection_start(&mut self, event: GarbageCollectionStartFn) { self.garbage_collection_start = event }
58    pub fn set_method_entry(&mut self, event: MethodEntryFn) { self.method_entry = event }
59    pub fn set_method_exit(&mut self, event: MethodExitFn) { self.method_exit = event }
60    pub fn set_monitor_contended_enter(&mut self, event: MonitorContendedEnterFn) { self.monitor_contended_enter = event }
61    pub fn set_monitor_contended_entered(&mut self, event: MonitorContendedEnteredFn) { self.monitor_contended_entered = event }
62    pub fn set_monitor_wait(&mut self, event: MonitorWaitFn) { self.monitor_wait = event }
63    pub fn set_monitor_waited(&mut self, event: MonitorWaitedFn) { self.monitor_waited = event }
64    pub fn set_native_method_bind(&mut self, event: NativeMethodBindFn) { self.native_method_bind = event }
65    pub fn set_object_free(&mut self, event: ObjectFreeFn) { self.object_free = event }
66    pub fn set_resource_exhausted(&mut self, event: ResourceExhaustedFn) { self.resource_exhausted = event }
67    pub fn set_single_step(&mut self, event: SingleStepFn) { self.single_step = event }
68    pub fn set_thread_end(&mut self, event: ThreadEndFn) { self.thread_end = event }
69    pub fn set_thread_start(&mut self, event: ThreadStartFn) { self.thread_start = event }
70    pub fn set_vm_death(&mut self, event: VmDeathFn) { self.vm_death = event }
71    pub fn set_vm_init(&mut self, event: VmInitFn) { self.vm_init = event }
72    pub fn set_vm_object_alloc(&mut self, event: VmObjectAllocFn) { self.vm_object_alloc = event }
73    pub fn set_vm_start(&mut self, event: VmStartFn) { self.vm_start = event }
74}