Skip to main content

moqtap_trace/
event.rs

1use serde::{Deserialize, Serialize};
2
3/// Direction of a trace event.
4#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
5pub enum Direction {
6    #[serde(rename = "tx")]
7    Send,
8    #[serde(rename = "rx")]
9    Receive,
10}
11
12/// Type of trace event.
13#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
14pub enum TraceEventType {
15    ControlMessageSent,
16    ControlMessageReceived,
17    DataStreamOpened,
18    DataStreamClosed,
19    ObjectSent,
20    ObjectReceived,
21    SessionEstablished,
22    SessionClosed,
23    Error,
24}
25
26/// A single event in a MoQT trace.
27#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
28pub struct TraceEvent {
29    pub timestamp_us: u64,
30    pub event_type: TraceEventType,
31    pub direction: Direction,
32    #[serde(skip_serializing_if = "Option::is_none")]
33    pub message_type: Option<u64>,
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub request_id: Option<u64>,
36    #[serde(skip_serializing_if = "Option::is_none")]
37    pub track_alias: Option<u64>,
38    #[serde(skip_serializing_if = "Option::is_none")]
39    pub group: Option<u64>,
40    #[serde(skip_serializing_if = "Option::is_none")]
41    pub object: Option<u64>,
42    #[serde(skip_serializing_if = "Option::is_none")]
43    pub payload_size: Option<u64>,
44    #[serde(skip_serializing_if = "Option::is_none")]
45    pub error_code: Option<u64>,
46    #[serde(skip_serializing_if = "Option::is_none")]
47    pub reason: Option<String>,
48}