use crate::dispatcher::traits::Metric;
use crate::protocol::types::{DetailLevel, TraceObject};
use anyhow::Result;
use async_trait::async_trait;
use serde_json::Value;
pub mod datapoint;
pub mod ekg;
pub mod forwarder;
pub mod stdout;
#[derive(Debug, Clone)]
pub struct DispatchMessage {
pub trace_object: TraceObject,
pub human: String,
pub machine: Value,
pub metrics: Vec<Metric>,
pub detail: DetailLevel,
}
#[async_trait]
pub trait Backend: Send + Sync {
async fn dispatch(&self, msg: &DispatchMessage) -> Result<()>;
}