tramex_tools/interface/
types.rs1use std::str::FromStr;
4
5use crate::interface::onelog::OneLog;
6
7#[derive(serde::Deserialize, Debug)]
9pub struct WebSocketLog {
11 pub message: String,
13
14 pub message_id: Option<u64>,
16
17 pub time: f64,
19
20 pub utc: f64,
22
23 pub logs: Vec<OneLog>,
25}
26
27#[derive(serde::Deserialize, Debug)]
29pub struct BaseMessage {
30 pub message: String,
32
33 pub name: String,
35
36 pub time: f64,
38
39 pub utc: f64,
41
42 pub version: String,
44}
45
46#[derive(Debug, PartialEq)]
47pub enum LogLevel {
49 ERROR = 1,
51
52 WARN = 2,
54
55 INFO = 3,
57
58 DEBUG = 4,
60}
61
62#[derive(serde::Deserialize, Debug, PartialEq)]
63pub enum SourceLog {
65 ENB,
67
68 MME,
70}
71
72#[derive(serde::Deserialize, Debug, PartialEq, Default, Clone)]
73pub enum Direction {
75 #[default]
76 UL,
78
79 DL,
81
82 FROM,
84
85 TO,
87}
88
89impl FromStr for Direction {
90 type Err = ();
91
92 fn from_str(input_string: &str) -> Result<Self, Self::Err> {
93 match input_string {
94 "UL" => Ok(Direction::UL),
95 "DL" => Ok(Direction::DL),
96 "FROM" => Ok(Direction::FROM),
97 "TO" => Ok(Direction::TO),
98 _ => Err(()),
99 }
100 }
101}
102
103impl<'de> serde::Deserialize<'de> for LogLevel {
104 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
105 where
106 D: serde::Deserializer<'de>,
107 {
108 let deserialized_int = u8::deserialize(deserializer)?;
109 match deserialized_int {
110 1 => Ok(LogLevel::ERROR),
111 2 => Ok(LogLevel::WARN),
112 3 => Ok(LogLevel::INFO),
113 4 => Ok(LogLevel::DEBUG),
114 _ => Ok(LogLevel::INFO), }
116 }
117}