From 81548eba3f4c0cb6c386918e89bb4e8fb107a012 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Stuczy=C5=84ski?= Date: Thu, 26 Oct 2023 16:06:56 +0100 Subject: [PATCH] setting initial provider values at construction --- common/mixnode-common/src/forward_travel/mod.rs | 12 +++++++++--- mixnode/src/node/mod.rs | 13 ++++++++----- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/common/mixnode-common/src/forward_travel/mod.rs b/common/mixnode-common/src/forward_travel/mod.rs index 7e4545f985..8d7b04b11b 100644 --- a/common/mixnode-common/src/forward_travel/mod.rs +++ b/common/mixnode-common/src/forward_travel/mod.rs @@ -40,20 +40,26 @@ pub struct AllowedAddressesProvider { } impl AllowedAddressesProvider { - pub fn new( + pub async fn new( identity: IdentityKey, nyxd_endpoints: Vec, network_details: Option, ) -> Result { let network = network_details.unwrap_or(NymNetworkDetails::new_mainnet()); - Ok(AllowedAddressesProvider { + let mut provider = AllowedAddressesProvider { current_epoch: 0, identity, client_config: nyxd::Config::try_from_nym_network_details(&network)?, nyxd_endpoints, ingress: AllowedPaths::new(), egress: AllowedPaths::new(), - }) + }; + + // set initial values for ingress/egress + let client = provider.ephemeral_nyxd_client()?; + provider.update_state(client).await?; + + Ok(provider) } fn ephemeral_nyxd_client(&self) -> Result { diff --git a/mixnode/src/node/mod.rs b/mixnode/src/node/mod.rs index aa3b6c68a2..4c4d1283de 100644 --- a/mixnode/src/node/mod.rs +++ b/mixnode/src/node/mod.rs @@ -121,7 +121,7 @@ impl MixNode { Listener::new(listening_address, ingress, shutdown).start(connection_handler); } - fn start_allowed_addresses_provider( + async fn start_allowed_addresses_provider( &self, task_client: TaskClient, ) -> Result<(AllowedIngress, AllowedEgress), MixnodeError> { @@ -129,7 +129,8 @@ impl MixNode { let nyxd_endpoints = self.config.mixnode.nyxd_urls.clone(); let network = NymNetworkDetails::new_from_env(); - let mut provider = AllowedAddressesProvider::new(identity, nyxd_endpoints, Some(network))?; + let mut provider = + AllowedAddressesProvider::new(identity, nyxd_endpoints, Some(network)).await?; let filters = (provider.ingress(), provider.egress()); @@ -252,9 +253,11 @@ impl MixNode { let shutdown = TaskManager::default(); - let (ingress, egress) = self.start_allowed_addresses_provider( - shutdown.subscribe().named("AllowedAddressesProvider"), - )?; + let (ingress, egress) = self + .start_allowed_addresses_provider( + shutdown.subscribe().named("AllowedAddressesProvider"), + ) + .await?; let (node_stats_pointer, node_stats_update_sender) = self .start_node_stats_controller(shutdown.subscribe().named("node_statistics::Controller"));