functiontrace_server/
function_trace.rs1use std::borrow::Cow;
2use std::num::NonZeroU32;
3use std::time::Duration;
4
5#[derive(Debug)]
10#[cfg_attr(feature = "server", derive(serde::Deserialize))]
11#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
12#[serde(tag = "type")]
13pub enum FunctionTrace<'event> {
14 RegisterThread(ThreadRegistration),
19 Call {
20 time: Duration,
21 #[serde(borrow)]
22 func_name: Cow<'event, str>,
23 #[serde(borrow)]
24 filename: Cow<'event, str>,
25 linenumber: u32,
29 },
30 Return {
31 time: Duration,
32 #[serde(borrow)]
33 func_name: Cow<'event, str>,
34 },
35 NativeCall {
36 time: Duration,
37 #[serde(borrow)]
38 func_name: Cow<'event, str>,
39 #[serde(borrow)]
40 module_name: Cow<'event, str>,
41 },
42 NativeReturn {
43 time: Duration,
44 #[serde(borrow)]
45 func_name: Cow<'event, str>,
46 },
47 Exception {
48 time: Duration,
49 #[serde(borrow)]
50 exception_type: Cow<'event, str>,
51 #[serde(borrow)]
52 exception_value: Cow<'event, str>,
53 filename: String,
54 linenumber: NonZeroU32,
55 },
56 Log {
57 time: Duration,
58 #[serde(borrow)]
59 log_type: Cow<'event, str>,
60 #[serde(borrow)]
61 log_value: Cow<'event, str>,
62 },
63 Import {
64 time: Duration,
65 #[serde(borrow)]
66 module_name: Cow<'event, str>,
67 },
68 Allocation {
69 time: Duration,
70 details: AllocationDetails,
71 },
72}
73
74#[derive(Debug)]
76#[cfg_attr(feature = "server", derive(serde::Deserialize))]
77#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
78#[serde(tag = "type")]
79pub enum AllocationDetails {
80 Alloc { bytes: usize, addr: usize },
82 Realloc {
84 bytes: usize,
85 old_addr: usize,
86 new_addr: usize,
87 },
88 Free { old_addr: usize },
90}
91
92#[derive(Debug)]
94#[cfg_attr(feature = "server", derive(serde::Deserialize))]
95#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
96pub struct TraceInitialization {
97 pub program_name: String,
100 pub program_version: String,
103 pub lang_version: String,
105 pub platform: String,
107 pub time: Duration,
109}
110
111#[derive(Debug)]
113#[cfg_attr(feature = "server", derive(serde::Deserialize))]
114#[cfg_attr(feature = "serialize", derive(serde::Serialize))]
115pub struct ThreadRegistration {
116 pub time: Duration,
118 pub program_name: String,
120 pub pid: usize,
122}