rsiot/message/
msg_trace.rsuse std::collections::HashSet;
use serde::{Deserialize, Serialize};
use uuid::Uuid;
use super::Timestamp;
#[derive(Debug, Clone, Deserialize, PartialEq, Serialize)]
struct MsgTraceItem {
id: Uuid,
ts: Timestamp,
}
#[derive(Debug, Default, Clone, Deserialize, PartialEq, Serialize)]
pub struct MsgTrace(Vec<MsgTraceItem>);
impl MsgTrace {
pub fn generate_uuid() -> Uuid {
Uuid::new_v4()
}
pub fn add_trace_item(&mut self, id: Uuid) {
let ts = Timestamp::default();
let value = MsgTraceItem { ts, id };
self.0.push(value);
}
pub fn contains_trace_item(&self, id: &Uuid) -> bool {
self.0.iter().any(|tv| &tv.id == id)
}
pub fn get_ids(self) -> HashSet<Uuid> {
self.0.iter().map(|i| i.id).collect()
}
}