offline_protocol/telemetry/
transport_state.rs1use offline_protocol_transport::{TransportStatus, TransportType};
10
11#[derive(Debug, Clone, Copy, PartialEq, Eq)]
13pub struct TransportStateEvent {
14 pub timestamp_ms: i64,
16 pub transport: TransportType,
18 pub previous: TransportStatus,
20 pub current: TransportStatus,
22}
23
24impl TransportStateEvent {
25 pub const NAME: &'static str = "protocol.transport.state_changed";
27
28 pub fn telemetry_name(&self) -> &'static str {
30 Self::NAME
31 }
32}
33
34#[cfg(test)]
35mod tests {
36 use super::*;
37
38 #[test]
39 fn name_is_stable() {
40 let event = TransportStateEvent {
41 timestamp_ms: 0,
42 transport: TransportType::BLE,
43 previous: TransportStatus::Disconnected,
44 current: TransportStatus::Available,
45 };
46 assert_eq!(
47 TransportStateEvent::NAME,
48 "protocol.transport.state_changed"
49 );
50 assert_eq!(event.telemetry_name(), "protocol.transport.state_changed");
51 }
52
53 #[test]
54 fn transitions_are_comparable() {
55 let a = TransportStateEvent {
56 timestamp_ms: 1,
57 transport: TransportType::BLE,
58 previous: TransportStatus::Disconnected,
59 current: TransportStatus::Available,
60 };
61 let b = a;
62 assert_eq!(a, b);
63 }
64}