use std::sync::Arc;
pub const OUTCOME_SUCCESS: &str = "success";
pub const OUTCOME_FAILURE: &str = "failure";
pub const FAIL_CONNECT: &str = "connect";
pub const FAIL_TIMEOUT: &str = "timeout";
pub const FAIL_REJECTED_CLIENT: &str = "rejected_client";
pub const FAIL_REJECTED_SERVER: &str = "rejected_server";
pub const FAIL_PARSE: &str = "parse";
pub const FAIL_AUTH: &str = "auth";
pub const FAIL_OTHER: &str = "other";
pub trait DiscoverMetricsBackend: Send + Sync + std::fmt::Debug {
fn record_attempt(&self) {}
fn record_success(&self, _duration_ms: u64) {}
fn record_failure(&self, _duration_ms: u64, _reason: &'static str) {}
fn record_hold(&self, _duration_s: u64) {}
}
#[derive(Debug, Default)]
pub struct NoOpDiscoverMetrics;
impl DiscoverMetricsBackend for NoOpDiscoverMetrics {}
pub type DiscoverMetricsHandle = Arc<dyn DiscoverMetricsBackend>;
pub fn noop_discover_metrics() -> DiscoverMetricsHandle {
Arc::new(NoOpDiscoverMetrics)
}