use anyhow::Result;
pub trait EventEmitter: Send + Sync {
fn emit(&self, event: &str, payload: &str) -> Result<()>;
}
pub struct NoopEmitter;
impl EventEmitter for NoopEmitter {
fn emit(&self, _event: &str, _payload: &str) -> Result<()> {
Ok(())
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn noop_emitter_always_ok() {
let emitter = NoopEmitter;
assert!(emitter.emit("test-event", "{}").is_ok());
assert!(emitter.emit("", "").is_ok());
}
#[test]
fn noop_emitter_is_send_sync() {
fn assert_send_sync<T: Send + Sync>() {}
assert_send_sync::<NoopEmitter>();
}
}