use std::time::Duration;
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct PhpEmbedMetricsConfig {
pub enabled: bool,
pub publish_interval: Duration,
pub max_age: Duration,
}
impl PhpEmbedMetricsConfig {
pub fn validate(&self) -> Result<(), String> {
if self.publish_interval.is_zero() {
return Err("PHP metrics publish_interval must be positive".into());
}
Ok(())
}
}
impl Default for PhpEmbedMetricsConfig {
fn default() -> Self {
Self {
enabled: default_enabled(),
publish_interval: default_publish_interval(),
max_age: default_max_age(),
}
}
}
pub(crate) struct PhpEmbedMetricsConfigProvider {
config: PhpEmbedMetricsConfig,
}
impl PhpEmbedMetricsConfigProvider {
pub(crate) fn new(config: PhpEmbedMetricsConfig) -> Self {
Self { config }
}
pub(crate) fn config(&self) -> PhpEmbedMetricsConfig {
self.config
}
}
fn default_enabled() -> bool {
true
}
fn default_publish_interval() -> Duration {
Duration::from_secs(1)
}
fn default_max_age() -> Duration {
Duration::from_secs(5)
}