rusty_feeder/provider/
connection.rs

1/// Connection statistics for performance monitoring
2#[derive(Debug, Clone, Default)]
3#[repr(align(64))] // Cache-line alignment for better CPU cache efficiency
4pub struct ConnectionStats {
5    /// Number of messages received
6    pub messages_received: u64,
7
8    /// Number of messages sent
9    pub messages_sent: u64,
10
11    /// Number of successful reconnections
12    pub reconnections: u32,
13
14    /// Total bytes received
15    pub bytes_received: u64,
16
17    /// Total bytes sent
18    pub bytes_sent: u64,
19
20    /// Last message received timestamp (nanoseconds)
21    pub last_message_time: u64,
22
23    /// Last ping timestamp (nanoseconds)
24    pub last_ping_time: u64,
25
26    /// Last pong timestamp (nanoseconds)
27    pub last_pong_time: u64,
28
29    /// Average message processing latency (nanoseconds)
30    pub avg_latency_ns: u64,
31
32    /// Connection established timestamp (nanoseconds)
33    pub connected_time: u64,
34
35    /// Current connection state
36    pub connection_state: ConnectionState,
37
38    /// Number of errors encountered
39    pub errors: u32,
40}
41
42/// Connection state enum
43#[derive(Debug, Clone, Copy, PartialEq, Eq)]
44pub enum ConnectionState {
45    /// Not connected
46    Disconnected,
47
48    /// Connection in progress
49    Connecting,
50
51    /// Connected and authenticated (if required)
52    Connected,
53
54    /// Connection retry in progress
55    Reconnecting,
56
57    /// Connection error
58    Error,
59}
60
61impl Default for ConnectionState {
62    fn default() -> Self {
63        Self::Disconnected
64    }
65}