use std::num::NonZeroUsize;
#[cfg(feature = "settings")]
use crate::settings::settings;
#[cfg_attr(feature = "settings", settings(crate_path = "crate"))]
#[cfg_attr(not(feature = "settings"), derive(Clone, Debug, serde::Deserialize))]
pub struct UserTracingSettings {
#[serde(default = "UserTracingSettings::default_enabled")]
pub enabled: bool,
#[serde(default = "UserTracingSettings::default_max_queue_size")]
pub max_queue_size: Option<NonZeroUsize>,
pub output: UserTracesOutput,
}
#[cfg(not(feature = "settings"))]
impl Default for UserTracingSettings {
fn default() -> Self {
Self {
enabled: UserTracingSettings::default_enabled(),
max_queue_size: UserTracingSettings::default_max_queue_size(),
output: Default::default(),
}
}
}
impl UserTracingSettings {
fn default_enabled() -> bool {
false
}
const fn default_max_queue_size() -> Option<NonZeroUsize> {
Some(const { NonZeroUsize::new(1_000_000).expect("1_000_000 is not zero") })
}
}
#[cfg_attr(
feature = "settings",
settings(crate_path = "crate", impl_default = false)
)]
#[cfg_attr(not(feature = "settings"), derive(Clone, Debug, serde::Deserialize))]
pub enum UserTracesOutput {
OtlpUds(OtlpUdsOutputSettings),
}
impl Default for UserTracesOutput {
fn default() -> Self {
Self::OtlpUds(Default::default())
}
}
#[cfg_attr(feature = "settings", settings(crate_path = "crate"))]
#[cfg_attr(not(feature = "settings"), derive(Clone, Debug, serde::Deserialize))]
pub struct OtlpUdsOutputSettings {
pub socket_path: String,
pub routing_header_name: String,
#[serde(default = "OtlpUdsOutputSettings::default_num_tasks")]
pub num_tasks: usize,
#[serde(default = "OtlpUdsOutputSettings::default_max_batch_size")]
pub max_batch_size: usize,
}
#[cfg(not(feature = "settings"))]
impl Default for OtlpUdsOutputSettings {
fn default() -> Self {
Self {
socket_path: String::new(),
routing_header_name: String::new(),
num_tasks: OtlpUdsOutputSettings::default_num_tasks(),
max_batch_size: OtlpUdsOutputSettings::default_max_batch_size(),
}
}
}
impl OtlpUdsOutputSettings {
const fn default_num_tasks() -> usize {
1
}
const fn default_max_batch_size() -> usize {
512
}
}