stdiobus_core/stats.rs
1// SPDX-License-Identifier: Apache-2.0
2// Copyright (c) 2026-present Raman Marozau <raman@worktif.com>
3// Copyright (c) 2026-present stdiobus contributors
4
5//! Runtime statistics for stdio_bus
6
7use serde::{Deserialize, Serialize};
8
9/// Runtime statistics
10#[derive(Debug, Clone, Default, Serialize, Deserialize)]
11pub struct BusStats {
12 /// Messages sent to workers
13 pub messages_in: u64,
14 /// Messages received from workers
15 pub messages_out: u64,
16 /// Total bytes sent
17 pub bytes_in: u64,
18 /// Total bytes received
19 pub bytes_out: u64,
20 /// Number of worker restarts
21 pub worker_restarts: u64,
22 /// Messages that couldn't be routed
23 pub routing_errors: u64,
24 /// Client connections (TCP/Unix modes)
25 pub client_connects: u64,
26 /// Client disconnections
27 pub client_disconnects: u64,
28}
29
30impl BusStats {
31 /// Create new empty stats
32 pub fn new() -> Self {
33 Self::default()
34 }
35
36 /// Reset all counters to zero
37 pub fn reset(&mut self) {
38 *self = Self::default();
39 }
40}