use super::{Backend, DispatchMessage};
use crate::forwarder::ForwarderHandle;
use anyhow::Result;
use async_trait::async_trait;
pub struct ForwarderBackend {
handle: ForwarderHandle,
}
impl ForwarderBackend {
pub fn new(handle: ForwarderHandle) -> Self {
Self { handle }
}
}
#[async_trait]
impl Backend for ForwarderBackend {
async fn dispatch(&self, msg: &DispatchMessage) -> Result<()> {
self.handle
.try_send(msg.trace_object.clone())
.map_err(|e| anyhow::anyhow!("forwarder queue full: {e}"))?;
Ok(())
}
}