From 6013b20b9bfcecb439f7eba3def3b34f613e9277 Mon Sep 17 00:00:00 2001 From: plebhash Date: Sat, 1 Feb 2025 11:28:39 -0300 Subject: [PATCH] add is_listening API to TranslatorSv2 --- roles/tests-integration/lib/mod.rs | 4 +--- roles/translator/src/lib/mod.rs | 12 +++++------- roles/translator/src/lib/proxy_config.rs | 15 ++++++--------- 3 files changed, 12 insertions(+), 19 deletions(-) diff --git a/roles/tests-integration/lib/mod.rs b/roles/tests-integration/lib/mod.rs index b22c7cacf9..c72c00efbb 100644 --- a/roles/tests-integration/lib/mod.rs +++ b/roles/tests-integration/lib/mod.rs @@ -203,7 +203,6 @@ pub async fn start_sv2_translator(upstream: SocketAddr) -> (TranslatorSv2, Socke ) .expect("failed"); let listening_address = get_available_address(); - let listening_port = listening_address.port(); let hashrate = measure_hashrate(1) as f32 / 100.0; let min_individual_miner_hashrate = hashrate; let shares_per_minute = 60.0; @@ -229,8 +228,7 @@ pub async fn start_sv2_translator(upstream: SocketAddr) -> (TranslatorSv2, Socke upstream_difficulty_config, ); let downstream_conf = translator_sv2::proxy_config::DownstreamConfig::new( - listening_address.ip().to_string(), - listening_port, + listening_address, downstream_difficulty_config, ); diff --git a/roles/translator/src/lib/mod.rs b/roles/translator/src/lib/mod.rs index 5618d98728..b7b8676dc3 100644 --- a/roles/translator/src/lib/mod.rs +++ b/roles/translator/src/lib/mod.rs @@ -266,16 +266,10 @@ impl TranslatorSv2 { ); proxy::Bridge::start(b.clone()); - // Format `Downstream` connection address - let downstream_addr = SocketAddr::new( - IpAddr::from_str(&proxy_config.downstream_address).unwrap(), - proxy_config.downstream_port, - ); - let task_collector_downstream = task_collector_init_task.clone(); // Accept connections from one or more SV1 Downstream roles (SV1 Mining Devices) downstream_sv1::Downstream::accept_connections( - downstream_addr, + proxy_config.listen_address, tx_sv1_bridge, tx_sv1_notify, status::Sender::DownstreamListener(tx_status.clone()), @@ -297,6 +291,10 @@ impl TranslatorSv2 { pub fn shutdown(&self) { self.shutdown.notify_one(); } + + pub fn is_listening(&self) -> bool { + std::net::TcpStream::connect(self.config.listen_address).is_ok() + } } fn kill_tasks(task_collector: Arc>>) { diff --git a/roles/translator/src/lib/proxy_config.rs b/roles/translator/src/lib/proxy_config.rs index ec3711c5d6..c1db74745d 100644 --- a/roles/translator/src/lib/proxy_config.rs +++ b/roles/translator/src/lib/proxy_config.rs @@ -1,13 +1,13 @@ use key_utils::Secp256k1PublicKey; use serde::Deserialize; +use std::net::SocketAddr; #[derive(Debug, Deserialize, Clone)] pub struct ProxyConfig { pub upstream_address: String, pub upstream_port: u16, pub upstream_authority_pubkey: Secp256k1PublicKey, - pub downstream_address: String, - pub downstream_port: u16, + pub listen_address: SocketAddr, pub max_supported_version: u16, pub min_supported_version: u16, pub min_extranonce2_size: u16, @@ -39,16 +39,14 @@ impl UpstreamConfig { } pub struct DownstreamConfig { - address: String, - port: u16, + listen_address: SocketAddr, difficulty_config: DownstreamDifficultyConfig, } impl DownstreamConfig { - pub fn new(address: String, port: u16, difficulty_config: DownstreamDifficultyConfig) -> Self { + pub fn new(listen_address: SocketAddr, difficulty_config: DownstreamDifficultyConfig) -> Self { Self { - address, - port, + listen_address, difficulty_config, } } @@ -66,8 +64,7 @@ impl ProxyConfig { upstream_address: upstream.address, upstream_port: upstream.port, upstream_authority_pubkey: upstream.authority_pubkey, - downstream_address: downstream.address, - downstream_port: downstream.port, + listen_address: downstream.listen_address, max_supported_version, min_supported_version, min_extranonce2_size,