luaur_common/methods/
thread_context_event_argument.rs1use crate::enums::event_type::EventType;
2use crate::records::event::Event;
3use crate::records::event::EventData;
4use crate::records::thread_context::ThreadContext;
5
6impl ThreadContext {
7 pub fn event_argument(
8 &mut self,
9 name: *const core::ffi::c_char,
10 value: *const core::ffi::c_char,
11 ) {
12 let pos = self.data.len() as u32;
13 unsafe {
14 let mut p = name;
15 while !p.is_null() && *p != 0 {
16 self.data.push(*p);
17 p = p.add(1);
18 }
19 self.data.push(0);
20 }
21 self.events.push(Event {
22 r#type: EventType::ArgName,
23 token: 0,
24 data: EventData { microsec: pos },
25 });
26
27 let pos = self.data.len() as u32;
28 unsafe {
29 let mut p = value;
30 while !p.is_null() && *p != 0 {
31 self.data.push(*p);
32 p = p.add(1);
33 }
34 self.data.push(0);
35 }
36 self.events.push(Event {
37 r#type: EventType::ArgValue,
38 token: 0,
39 data: EventData { microsec: pos },
40 });
41
42 if self.events.len() > Self::kEventFlushLimit {
43 self.flush_events();
44 }
45 }
46}