tracing_tape/record/
event.rs1use zerocopy::{little_endian, AsBytes, FromBytes, FromZeroes, Unaligned};
2
3use super::{record_kind, RecordHeader};
4
5#[derive(Debug, Clone, Copy, AsBytes, FromZeroes, FromBytes, Unaligned)]
6#[repr(C)]
7pub struct EventRecord {
8 pub header: RecordHeader,
9 pub value_count: little_endian::U16,
10 pub timestamp: little_endian::I64,
11 pub callsite_id: little_endian::U64,
12 pub thread_id: little_endian::U64,
13}
14
15impl EventRecord {
16 pub fn new(value_count: u16, timestamp: i64, callsite_id: u64, thread_id: u64) -> Self {
17 EventRecord {
18 header: RecordHeader::new(record_kind::EVENT, std::mem::size_of::<Self>() as u16),
19 value_count: value_count.into(),
20 timestamp: timestamp.into(),
21 callsite_id: callsite_id.into(),
22 thread_id: thread_id.into(),
23 }
24 }
25}
26
27#[derive(Debug, Clone, Copy, AsBytes, FromZeroes, FromBytes, Unaligned)]
28#[repr(C)]
29pub struct EventValueRecord {
30 pub header: RecordHeader,
31 pub kind: u8,
32 pub field_id: little_endian::U64,
33 pub thread_id: little_endian::U64,
34}
35
36impl EventValueRecord {
37 pub fn new(field_id: u64, kind: u8, value_len: usize, thread_id: u64) -> Self {
38 EventValueRecord {
39 field_id: field_id.into(),
40 header: RecordHeader::new(
41 record_kind::EVENT_VALUE,
42 (std::mem::size_of::<Self>() + value_len) as u16,
43 ),
44 kind,
45 thread_id: thread_id.into(),
46 }
47 }
48}