Skip to main content

otell_core/model/
span.rs

1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
5pub struct SpanRecord {
6    pub trace_id: String,
7    pub span_id: String,
8    pub parent_span_id: Option<String>,
9    pub service: String,
10    pub name: String,
11    pub start_ts: DateTime<Utc>,
12    pub end_ts: DateTime<Utc>,
13    pub status: String,
14    pub attrs_json: String,
15    pub events_json: String,
16}
17
18impl SpanRecord {
19    pub fn duration_ms(&self) -> i64 {
20        (self.end_ts - self.start_ts).num_milliseconds().max(0)
21    }
22}