rsiot_messages_core/
msg_trace.rs1use std::collections::HashSet;
4
5use serde::{Deserialize, Serialize};
6use uuid::Uuid;
7
8use crate::Timestamp;
9
10#[derive(Debug, Clone, Deserialize, PartialEq, Serialize)]
11struct TraceValue {
12 id: Uuid,
13 ts: Timestamp,
14 name: String,
15}
16
17#[derive(Debug, Default, Clone, Deserialize, PartialEq, Serialize)]
18pub struct MsgTrace(Vec<TraceValue>);
19
20impl MsgTrace {
21 pub fn generate_uuid() -> Uuid {
22 Uuid::new_v4()
23 }
24
25 pub fn insert(&mut self, id: Uuid, name: String) {
26 let ts = Timestamp::default();
27 let value = TraceValue { ts, name, id };
28 self.0.push(value);
29 }
30
31 pub fn contains_key(&self, id: &Uuid) -> bool {
32 self.0.iter().any(|tv| &tv.id == id)
33 }
34
35 pub fn get_ids(self) -> HashSet<Uuid> {
37 self.0.iter().map(|i| i.id).collect()
38 }
39}