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}