duende_core/
lib.rs

1//! # duende-core
2//!
3//! Core daemon lifecycle primitives for the Duende cross-platform daemon framework.
4//!
5//! This crate provides the foundational types and traits for daemon management:
6//!
7//! - [`Daemon`] trait for implementing daemon lifecycle
8//! - [`DaemonConfig`] for daemon configuration
9//! - [`DaemonMetrics`] for RED method metrics (Rate, Errors, Duration)
10//! - [`DaemonContext`] for runtime context and signal handling
11//!
12//! ## Iron Lotus Framework
13//!
14//! This crate follows the Iron Lotus Framework principles:
15//! - **Genchi Genbutsu**: All operations traceable to syscalls via renacer
16//! - **Jidoka**: Explicit error handling, no panics
17//! - **Kaizen**: Continuous metrics for improvement
18//! - **Muda**: Zero-waste resource allocation
19//!
20//! ## Example
21//!
22//! ```rust,ignore
23//! use duende_core::{Daemon, DaemonConfig, DaemonContext, DaemonId, ExitReason};
24//! use async_trait::async_trait;
25//!
26//! struct MyDaemon {
27//!     id: DaemonId,
28//! }
29//!
30//! #[async_trait]
31//! impl Daemon for MyDaemon {
32//!     fn id(&self) -> DaemonId { self.id }
33//!     fn name(&self) -> &str { "my-daemon" }
34//!     // ... implement other methods
35//! }
36//! ```
37
38#![deny(unsafe_code)]
39#![warn(missing_docs)]
40// Allow significant_drop_tightening - overly aggressive for async code with locks
41#![allow(clippy::significant_drop_tightening)]
42
43pub mod adapter;
44pub mod adapters;
45pub mod config;
46pub mod daemon;
47pub mod error;
48pub mod manager;
49pub mod metrics;
50pub mod platform;
51#[cfg(test)]
52pub mod tests;
53pub mod types;
54
55pub use adapter::{
56    DaemonHandle, HandleData, PlatformAdapter, PlatformError, PlatformResult, TracerHandle,
57    TracerType,
58};
59pub use adapters::{
60    select_adapter, select_adapter_auto, ContainerAdapter, ContainerRuntime, LaunchdAdapter,
61    NativeAdapter, PepitaAdapter, SystemdAdapter, WosAdapter,
62};
63pub use config::{DaemonConfig, ResourceConfig};
64pub use daemon::{Daemon, DaemonContext, DaemonContextHandle};
65pub use error::{DaemonError, Result};
66pub use manager::{BackoffConfig, DaemonManager, ManagedDaemon, RestartPolicy};
67pub use metrics::DaemonMetrics;
68pub use platform::{detect_platform, Platform};
69pub use types::{DaemonId, DaemonStatus, ExitReason, FailureReason, HealthStatus, Signal};