use serde::Deserialize;
use crate::bidi::BiDi;
use crate::bidi::command::BidiEvent;
use crate::bidi::ids::RealmId;
use crate::common::protocol::string_enum;
string_enum! {
pub enum LogLevel {
Debug = "debug",
Info = "info",
Warn = "warn",
Error = "error",
}
}
pub(crate) mod events {
use super::*;
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct EntryAdded {
#[serde(rename = "type")]
pub entry_type: String,
pub level: LogLevel,
#[serde(default)]
pub source: serde_json::Value,
#[serde(default)]
pub text: Option<String>,
pub timestamp: u64,
#[serde(default)]
pub stack_trace: serde_json::Value,
#[serde(default)]
pub realm: Option<RealmId>,
#[serde(flatten)]
pub extra: serde_json::Map<String, serde_json::Value>,
}
impl BidiEvent for EntryAdded {
const METHOD: &'static str = "log.entryAdded";
}
}
#[derive(Debug)]
pub struct LogModule<'a> {
#[allow(dead_code)]
bidi: &'a BiDi,
}
impl<'a> LogModule<'a> {
pub(crate) fn new(bidi: &'a BiDi) -> Self {
Self {
bidi,
}
}
}