libits_client/analyse/
cause.rs1use crate::reception::exchange::message::Message;
10use crate::reception::exchange::Exchange;
11use std::fmt::Formatter;
12
13pub struct Cause {
14 pub m_type: String,
15 pub id: String,
16}
17
18impl std::fmt::Display for Cause {
19 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
20 write!(f, "/cause_type:{}/cause_id:{}", self.m_type, self.id)
21 }
22}
23
24impl Cause {
25 fn new(m_type: String, id: String) -> Self {
26 Self { m_type, id }
27 }
28
29 pub fn from_exchange(exchange: &Exchange) -> Option<Cause> {
30 return match &exchange.message {
31 Message::CAM(message) => Some(Cause::new(
32 exchange.type_field.clone(),
33 format!("{}/{}", message.station_id, message.generation_delta_time),
34 )),
35 Message::CPM(message) => Some(Cause::new(
36 exchange.type_field.clone(),
37 format!("{}/{}", message.station_id, message.generation_delta_time),
38 )),
39 _ => None,
40 };
41 }
42}