#![allow(clippy::doc_markdown, clippy::needless_doctest_main)]
pub mod aggregator;
pub mod bridge_layer;
mod error;
pub mod layer;
pub mod server;
mod visitors;
use devtools_wire_format::{instrument, Field};
pub use error::Error;
use std::sync::atomic::AtomicUsize;
use std::time::Instant;
use tokio::sync::{mpsc, Notify};
const EVENT_BUFFER_CAPACITY: usize = 512;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Debug, Default)]
pub struct Shared {
dropped_log_events: AtomicUsize,
dropped_span_events: AtomicUsize,
flush: Notify,
}
#[derive(Debug)]
pub enum Event {
Metadata(&'static tracing_core::Metadata<'static>),
Event {
at: Instant,
metadata: &'static tracing_core::Metadata<'static>,
message: String,
fields: Vec<Field>,
maybe_parent: Option<tracing_core::span::Id>,
},
NewSpan {
at: Instant,
id: tracing_core::span::Id,
metadata: &'static tracing_core::Metadata<'static>,
fields: Vec<Field>,
maybe_parent: Option<tracing_core::span::Id>,
},
EnterSpan {
at: Instant,
thread_id: u64,
span_id: tracing_core::span::Id,
},
ExitSpan {
at: Instant,
thread_id: u64,
span_id: tracing_core::span::Id,
},
CloseSpan {
at: Instant,
span_id: tracing_core::span::Id,
},
SpanRecorded {
span_id: tracing_core::span::Id,
fields: Vec<Field>,
},
}
pub enum Command {
Instrument(Watcher),
}
pub struct Watcher {
tx: mpsc::Sender<Result<instrument::Update>>,
}