From f53d2aa4cd6fde73aa427869811c39424b615f8a Mon Sep 17 00:00:00 2001 From: mfahampshire Date: Wed, 6 Nov 2024 17:54:14 +0100 Subject: [PATCH] small tweak to tcp tracker --- sdk/rust/nym-sdk/src/tcp_proxy.rs | 6 ++-- .../nym-sdk/src/tcp_proxy/tcp_proxy_client.rs | 30 +++++++++---------- .../{connection_tracker.rs => tcp_tracker.rs} | 3 -- 3 files changed, 18 insertions(+), 21 deletions(-) rename sdk/rust/nym-sdk/src/tcp_proxy/{connection_tracker.rs => tcp_tracker.rs} (98%) diff --git a/sdk/rust/nym-sdk/src/tcp_proxy.rs b/sdk/rust/nym-sdk/src/tcp_proxy.rs index 5e276ca4c9..fcbaf4ad11 100644 --- a/sdk/rust/nym-sdk/src/tcp_proxy.rs +++ b/sdk/rust/nym-sdk/src/tcp_proxy.rs @@ -201,10 +201,12 @@ //! } //! ``` -mod connection_tracker; +// TODO UPDATE EXAMPLE ONCE STABLE + mod tcp_proxy_client; mod tcp_proxy_server; +mod tcp_tracker; -pub use connection_tracker::TcpConnectionTracker; pub use tcp_proxy_client::NymProxyClient; pub use tcp_proxy_server::NymProxyServer; +pub use tcp_tracker::TcpConnectionTracker; diff --git a/sdk/rust/nym-sdk/src/tcp_proxy/tcp_proxy_client.rs b/sdk/rust/nym-sdk/src/tcp_proxy/tcp_proxy_client.rs index a072735e9b..98c61406d1 100644 --- a/sdk/rust/nym-sdk/src/tcp_proxy/tcp_proxy_client.rs +++ b/sdk/rust/nym-sdk/src/tcp_proxy/tcp_proxy_client.rs @@ -1,8 +1,8 @@ use crate::mixnet::{IncludedSurbs, MixnetClientBuilder, MixnetMessageSender, NymNetworkDetails}; use std::{sync::Arc, time::Duration}; -#[path = "connection_tracker.rs"] -mod connection_tracker; -use connection_tracker::TcpConnectionTracker; +#[path = "tcp_tracker.rs"] +mod tcp_tracker; +use tcp_tracker::TcpConnectionTracker; #[path = "utils.rs"] mod utils; use anyhow::Result; @@ -68,6 +68,14 @@ impl NymProxyClient { let listener = TcpListener::bind(format!("{}:{}", self.listen_address, self.listen_port)).await?; + let overall_counter = self.conn_tracker.clone(); + tokio::spawn(async move { + loop { + info!("active tcp connections: {}", overall_counter.get_count()); + tokio::time::sleep(Duration::from_secs(10)).await; + } + }); + loop { let (stream, _) = listener.accept().await?; tokio::spawn(NymProxyClient::handle_incoming( @@ -96,9 +104,9 @@ impl NymProxyClient { stream: TcpStream, server_address: Recipient, close_timeout: u64, - conn_pool: TcpConnectionTracker, + conn_tracker: TcpConnectionTracker, ) -> Result<()> { - conn_pool.increment(); + conn_tracker.increment(); // ID for creation of session abstraction; new session ID per new connection accepted by our tcp listener above. let session_id = uuid::Uuid::new_v4(); @@ -112,8 +120,6 @@ impl NymProxyClient { info!(":: creating client..."); let mut client = loop { let net = NymNetworkDetails::new_from_env(); - // TODO change to builder but ephemeral - // match MixnetClient::connect_new().await { match MixnetClientBuilder::new_ephemeral() .network_details(net) .build()? @@ -147,14 +153,6 @@ impl NymProxyClient { // Wrap in an Arc for memsafe concurrent access let sent_messages_account = Arc::clone(&messages_account); - let overall_counter = conn_pool.clone(); - tokio::spawn(async move { - loop { - info!("active tcp connections: {}", overall_counter.get_count()); - tokio::time::sleep(Duration::from_secs(5)).await; - } - }); - // 'Outgoing' thread tokio::spawn(async move { let mut message_id = 0; @@ -235,7 +233,7 @@ impl NymProxyClient { info!(":: Closing write end of session: {}", session_id); info!(":: Triggering client shutdown"); client.disconnect().await; - conn_pool.clone().decrement()?; + conn_tracker.clone().decrement()?; return Ok::<(), anyhow::Error>(()) } } diff --git a/sdk/rust/nym-sdk/src/tcp_proxy/connection_tracker.rs b/sdk/rust/nym-sdk/src/tcp_proxy/tcp_tracker.rs similarity index 98% rename from sdk/rust/nym-sdk/src/tcp_proxy/connection_tracker.rs rename to sdk/rust/nym-sdk/src/tcp_proxy/tcp_tracker.rs index 7bd565222e..1b6e434ce4 100644 --- a/sdk/rust/nym-sdk/src/tcp_proxy/connection_tracker.rs +++ b/sdk/rust/nym-sdk/src/tcp_proxy/tcp_tracker.rs @@ -1,8 +1,6 @@ -use anyhow::Error; use anyhow::{bail, Result}; use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::Arc; -use std::thread; #[derive(Debug)] pub struct TcpConnectionTracker { @@ -45,7 +43,6 @@ impl Clone for TcpConnectionTracker { mod tests { use super::*; use anyhow::Result; - use std::sync::Arc; use std::thread; #[test]