use std::{path::PathBuf, time::Duration};
use serde::Deserialize;
const DEFAULT_POLL_INTERVAL: Duration = Duration::from_millis(10);
fn default_poll_interval() -> Duration {
DEFAULT_POLL_INTERVAL
}
fn default_true() -> bool {
true
}
fn default_cgroup_name() -> String {
format!("joule-profiler-{}", std::process::id())
}
#[derive(Debug, Clone, Deserialize)]
pub struct CgroupConfig {
pub cgroup_root: Option<PathBuf>,
#[serde(default = "default_cgroup_name")]
pub cgroup_name: String,
#[serde(default = "default_poll_interval", with = "humantime_serde")]
pub poll_interval: Duration,
#[serde(default = "default_true")]
pub attach_pid: bool,
#[serde(default = "default_true")]
pub create_cgroup: bool,
}
impl Default for CgroupConfig {
fn default() -> Self {
Self {
cgroup_root: None,
cgroup_name: default_cgroup_name(),
poll_interval: DEFAULT_POLL_INTERVAL,
attach_pid: true,
create_cgroup: true,
}
}
}