use std::str::FromStr;
use crate::interface::onelog::OneLog;
#[derive(serde::Deserialize, Debug)]
pub struct WebSocketLog {
pub message: String,
pub message_id: Option<u64>,
pub time: f64,
pub utc: f64,
pub logs: Vec<OneLog>,
}
#[derive(serde::Deserialize, Debug)]
pub struct BaseMessage {
pub message: String,
pub name: String,
pub time: f64,
pub utc: f64,
pub version: String,
}
#[derive(Debug, PartialEq)]
pub enum LogLevel {
ERROR = 1,
WARN = 2,
INFO = 3,
DEBUG = 4,
}
#[derive(serde::Deserialize, Debug, PartialEq)]
pub enum SourceLog {
ENB,
MME,
}
#[derive(serde::Deserialize, Debug, PartialEq, Default, Clone)]
pub enum Direction {
#[default]
UL,
DL,
FROM,
TO,
}
impl FromStr for Direction {
type Err = ();
fn from_str(input_string: &str) -> Result<Self, Self::Err> {
match input_string {
"UL" => Ok(Direction::UL),
"DL" => Ok(Direction::DL),
"FROM" => Ok(Direction::FROM),
"TO" => Ok(Direction::TO),
_ => Err(()),
}
}
}
impl<'de> serde::Deserialize<'de> for LogLevel {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: serde::Deserializer<'de>,
{
let deserialized_int = u8::deserialize(deserializer)?;
match deserialized_int {
1 => Ok(LogLevel::ERROR),
2 => Ok(LogLevel::WARN),
3 => Ok(LogLevel::INFO),
4 => Ok(LogLevel::DEBUG),
_ => Ok(LogLevel::INFO), }
}
}