mod clock;
mod file_activity;
pub(crate) mod io;
mod readers;
mod runtime;
pub use clock::{
is_idle_timeout_exceeded, new_activity_timestamp, new_file_activity_tracker,
time_since_activity, touch_activity, SharedActivityTimestamp, SharedFileActivityTracker,
IDLE_TIMEOUT_SECS,
};
#[cfg(test)]
pub use clock::{
is_idle_timeout_exceeded_with_clock, new_activity_timestamp_with_clock,
time_since_activity_with_clock, touch_activity_with_clock, Clock, MonotonicClock,
};
pub use file_activity::FileActivityTracker;
pub use readers::ActivityTrackingReader;
pub type KillConfig = self::io::KillConfig;
pub const DEFAULT_KILL_CONFIG: KillConfig = self::io::DEFAULT_KILL_CONFIG;
pub type SharedAgentChild = self::io::SharedAgentChild;
pub(crate) type SharedChildActivityObserver = self::io::SharedChildActivityObserver;
pub type FileActivityConfig = self::runtime::FileActivityConfig;
pub type MonitorConfig = self::runtime::MonitorConfig;
pub type MonitorResult = self::runtime::MonitorResult;
pub fn monitor_idle_timeout_with_interval(
activity_timestamp: &SharedActivityTimestamp,
child: &SharedAgentChild,
timeout: std::time::Duration,
should_stop: &std::sync::Arc<std::sync::atomic::AtomicBool>,
executor: &std::sync::Arc<dyn crate::executor::ProcessExecutor>,
check_interval: std::time::Duration,
) -> MonitorResult {
self::runtime::monitor_idle_timeout_with_interval(
activity_timestamp,
child,
timeout,
should_stop,
executor,
check_interval,
)
}
pub fn monitor_idle_timeout_with_interval_and_kill_config(
activity_timestamp: &SharedActivityTimestamp,
file_activity: Option<&FileActivityConfig>,
child: &SharedAgentChild,
should_stop: &std::sync::Arc<std::sync::atomic::AtomicBool>,
executor: &std::sync::Arc<dyn crate::executor::ProcessExecutor>,
config: MonitorConfig,
) -> MonitorResult {
self::runtime::monitor_idle_timeout_with_interval_and_kill_config(
activity_timestamp,
file_activity,
child,
should_stop,
executor,
config,
)
}
pub(crate) fn monitor_idle_timeout_with_interval_and_kill_config_and_observer(
activity_timestamp: &SharedActivityTimestamp,
file_activity: Option<&FileActivityConfig>,
child: &SharedAgentChild,
should_stop: &std::sync::Arc<std::sync::atomic::AtomicBool>,
executor: &std::sync::Arc<dyn crate::executor::ProcessExecutor>,
monitor_config: MonitorConfig,
child_activity_observer: Option<&SharedChildActivityObserver>,
) -> MonitorResult {
self::runtime::monitor_idle_timeout_with_interval_and_kill_config_and_observer(
activity_timestamp,
file_activity,
child,
should_stop,
executor,
monitor_config,
child_activity_observer,
)
}
#[cfg(test)]
mod tests;