From 41a2872ee5fa14e7656277a93c5bd979aa839bb7 Mon Sep 17 00:00:00 2001 From: Vincent van Haaff Date: Sun, 10 Nov 2024 03:41:44 -0800 Subject: [PATCH 1/4] added active and total node count to cli status bar (also added tunnel count scaffolding) note the tunnel count introduces a warning. no bueno. --- veilid-cli/src/cursive_ui.rs | 43 +++++++++++++++++++++++++++--- veilid-cli/src/interactive_ui.rs | 3 +++ veilid-cli/src/io_read_write_ui.rs | 3 +++ veilid-cli/src/log_viewer_ui.rs | 3 +++ veilid-cli/src/ui.rs | 1 + 5 files changed, 50 insertions(+), 3 deletions(-) diff --git a/veilid-cli/src/cursive_ui.rs b/veilid-cli/src/cursive_ui.rs index 3ef05691..d7de1612 100644 --- a/veilid-cli/src/cursive_ui.rs +++ b/veilid-cli/src/cursive_ui.rs @@ -72,6 +72,7 @@ struct UIState { network_down_up: Dirty<(f32, f32)>, connection_state: Dirty, peers_state: Dirty>, + tunnels_state: Dirty>, // V: or whatever the tunnel type would be node_id: Dirty, } @@ -85,6 +86,7 @@ impl UIState { network_down_up: Dirty::new((0.0, 0.0)), connection_state: Dirty::new(ConnectionState::Disconnected), peers_state: Dirty::new(Vec::new()), + tunnels_state: Dirty::new(Vec::new()), node_id: Dirty::new("".to_owned()), } } @@ -938,11 +940,41 @@ impl CursiveUI { ColorStyle::highlight_inactive(), ); status.append_styled("|", ColorStyle::highlight_inactive()); - // Add tunnel status - status.append_styled(" No Tunnels ", ColorStyle::highlight_inactive()); + // Check for tunnels first, fallback to node count if none + let tunnel_count = inner.ui_state.tunnels_state.get().len(); + if tunnel_count > 0 { + status.append_styled( + format!(" {} Tunnels ", tunnel_count), + ColorStyle::highlight_inactive(), + ); + } else { + status.append_styled(" No Tunnels ", ColorStyle::highlight_inactive()); + } + status.append_styled("|", ColorStyle::highlight_inactive()); + // Add connected vs total nodes count + let connected_nodes = inner.ui_state.peers_state.get().len(); + let total_nodes = inner.ui_state.peers_state.get().iter() + .map(|peer| peer["node_ids"].len()) + .sum::(); + status.append_styled( + format!(" {} Connected ({} Nodes Found) ", connected_nodes, total_nodes), + ColorStyle::highlight_inactive(), + ); + let tunnel_count = inner.ui_state.tunnels_state.get().len(); + if tunnel_count > 0 { + status.append_styled( + format!(" {} Tunnels ", tunnel_count), + ColorStyle::highlight_inactive(), + ); + } else { + let peer_count = inner.ui_state.peers_state.get().len(); + status.append_styled( + format!(" {} Nodes ", peer_count), + ColorStyle::highlight_inactive(), + ); + } status.append_styled("|", ColorStyle::highlight_inactive()); }; - statusbar.set_content(status); } @@ -1330,6 +1362,11 @@ impl UISender for CursiveUISender { } let _ = self.cb_sink.send(Box::new(CursiveUI::update_cb)); } + fn set_tunnel_status(&mut self, tunnels: Option>) { + let mut inner = self.inner.lock(); + inner.ui_state.tunnels_state.set(tunnels.unwrap_or_default()); + let _ = self.cb_sink.send(Box::new(CursiveUI::update_cb)); + } fn set_config(&mut self, config: &json::JsonValue) { let mut inner = self.inner.lock(); diff --git a/veilid-cli/src/interactive_ui.rs b/veilid-cli/src/interactive_ui.rs index 34a1e623..609e6b4f 100644 --- a/veilid-cli/src/interactive_ui.rs +++ b/veilid-cli/src/interactive_ui.rs @@ -348,6 +348,9 @@ impl UISender for InteractiveUISender { ) { // } + fn set_tunnel_status(&mut self, _tunnels: Option>) { + // + } fn set_config(&mut self, _config: &json::JsonValue) { // } diff --git a/veilid-cli/src/io_read_write_ui.rs b/veilid-cli/src/io_read_write_ui.rs index 83addc84..0efb6d09 100644 --- a/veilid-cli/src/io_read_write_ui.rs +++ b/veilid-cli/src/io_read_write_ui.rs @@ -248,6 +248,9 @@ impl>) { + // + } fn set_config(&mut self, _config: &json::JsonValue) { // } diff --git a/veilid-cli/src/log_viewer_ui.rs b/veilid-cli/src/log_viewer_ui.rs index 1e740ad0..b261e882 100644 --- a/veilid-cli/src/log_viewer_ui.rs +++ b/veilid-cli/src/log_viewer_ui.rs @@ -237,6 +237,9 @@ impl UISender for LogViewerUISender { ) { // } + fn set_tunnel_status(&mut self, _tunnels: Option>) { + // + } fn set_config(&mut self, _config: &json::JsonValue) { // } diff --git a/veilid-cli/src/ui.rs b/veilid-cli/src/ui.rs index 8ca14085..a22d247c 100644 --- a/veilid-cli/src/ui.rs +++ b/veilid-cli/src/ui.rs @@ -34,6 +34,7 @@ pub trait UISender: Send { bps_up: u64, peers: Vec, ); + fn set_tunnel_status(&mut self, tunnels: Option>); fn set_config(&mut self, config: &json::JsonValue); fn set_connection_state(&mut self, state: ConnectionState); fn add_node_event(&self, log_color: Level, event: &str); From 1b96c38007fdbca70dc707e1cab71a4fdee69b58 Mon Sep 17 00:00:00 2001 From: Vincent van Haaff Date: Sun, 10 Nov 2024 10:58:37 -0800 Subject: [PATCH 2/4] removed unused tunnel fn warnings with neat linter flag "we got `#[expect(dead_code)]` before gta 6" --- veilid-cli/src/ui.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/veilid-cli/src/ui.rs b/veilid-cli/src/ui.rs index a22d247c..1f33136b 100644 --- a/veilid-cli/src/ui.rs +++ b/veilid-cli/src/ui.rs @@ -34,6 +34,7 @@ pub trait UISender: Send { bps_up: u64, peers: Vec, ); + #[expect(dead_code)] fn set_tunnel_status(&mut self, tunnels: Option>); fn set_config(&mut self, config: &json::JsonValue); fn set_connection_state(&mut self, state: ConnectionState); From d82554db0b0315c50972634149527580b7a7ea50 Mon Sep 17 00:00:00 2001 From: Vincent van Haaff Date: Sun, 10 Nov 2024 12:23:09 -0800 Subject: [PATCH 3/4] formatting and learn to love the cargo fmt runner --- veilid-cli/src/cursive_ui.rs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/veilid-cli/src/cursive_ui.rs b/veilid-cli/src/cursive_ui.rs index d7de1612..8ac69b23 100644 --- a/veilid-cli/src/cursive_ui.rs +++ b/veilid-cli/src/cursive_ui.rs @@ -953,11 +953,18 @@ impl CursiveUI { status.append_styled("|", ColorStyle::highlight_inactive()); // Add connected vs total nodes count let connected_nodes = inner.ui_state.peers_state.get().len(); - let total_nodes = inner.ui_state.peers_state.get().iter() + let total_nodes = inner + .ui_state + .peers_state + .get() + .iter() .map(|peer| peer["node_ids"].len()) .sum::(); status.append_styled( - format!(" {} Connected ({} Nodes Found) ", connected_nodes, total_nodes), + format!( + " {} Connected ({} Nodes Found) ", + connected_nodes, total_nodes + ), ColorStyle::highlight_inactive(), ); let tunnel_count = inner.ui_state.tunnels_state.get().len(); @@ -1364,7 +1371,10 @@ impl UISender for CursiveUISender { } fn set_tunnel_status(&mut self, tunnels: Option>) { let mut inner = self.inner.lock(); - inner.ui_state.tunnels_state.set(tunnels.unwrap_or_default()); + inner + .ui_state + .tunnels_state + .set(tunnels.unwrap_or_default()); let _ = self.cb_sink.send(Box::new(CursiveUI::update_cb)); } fn set_config(&mut self, config: &json::JsonValue) { From 9171d99165bec59598290c1e91e0362d0b22f40d Mon Sep 17 00:00:00 2001 From: Vincent van Haaff Date: Sun, 10 Nov 2024 12:43:14 -0800 Subject: [PATCH 4/4] comment cleanup --- veilid-cli/src/cursive_ui.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/veilid-cli/src/cursive_ui.rs b/veilid-cli/src/cursive_ui.rs index 8ac69b23..ebaf5bbc 100644 --- a/veilid-cli/src/cursive_ui.rs +++ b/veilid-cli/src/cursive_ui.rs @@ -72,7 +72,7 @@ struct UIState { network_down_up: Dirty<(f32, f32)>, connection_state: Dirty, peers_state: Dirty>, - tunnels_state: Dirty>, // V: or whatever the tunnel type would be + tunnels_state: Dirty>, node_id: Dirty, }