25 lines
526 B
Rust
25 lines
526 B
Rust
|
|
//! 共享应用状态。
|
|||
|
|
//!
|
|||
|
|
//! 采样任务(写)与 HTTP handler(读)通过一个被 `RwLock` 保护的
|
|||
|
|
//! `Stats` 快照通信。`AppState` 可廉价 `clone`(内部是 `Arc`)。
|
|||
|
|
|
|||
|
|
use std::sync::Arc;
|
|||
|
|
|
|||
|
|
use tokio::sync::RwLock;
|
|||
|
|
|
|||
|
|
use crate::monitor::Stats;
|
|||
|
|
|
|||
|
|
#[derive(Clone)]
|
|||
|
|
pub struct AppState {
|
|||
|
|
/// 最新一次采样快照。
|
|||
|
|
pub snapshot: Arc<RwLock<Stats>>,
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
impl AppState {
|
|||
|
|
pub fn new() -> Self {
|
|||
|
|
Self {
|
|||
|
|
snapshot: Arc::new(RwLock::new(Stats::default())),
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|