use crate::Log;
pub struct SessionPrefixLog<L: Log> {
session_id: String,
inner: L,
}
impl<L: Log> SessionPrefixLog<L> {
pub fn new(session_id: impl Into<String>, inner: L) -> Self {
Self {
session_id: session_id.into(),
inner,
}
}
}
#[async_trait::async_trait]
impl<L: Log> Log for SessionPrefixLog<L> {
fn on_incoming(&self, message: &str) {
self.inner
.on_incoming(&format!("[{}] {message}", self.session_id));
}
fn on_outgoing(&self, message: &str) {
self.inner
.on_outgoing(&format!("[{}] {message}", self.session_id));
}
fn on_event(&self, text: &str) {
self.inner
.on_event(&format!("[{}] {text}", self.session_id));
}
async fn shutdown(&self) {
self.inner.shutdown().await;
}
}