Skip to content

Commit

Permalink
feat: add configuration parameter for signer registration repeater de…
Browse files Browse the repository at this point in the history
…lay in relay
  • Loading branch information
jpraynaud committed Apr 16, 2024
1 parent a954bc9 commit 0291192
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 8 deletions.
17 changes: 15 additions & 2 deletions mithril-relay/src/commands/signer.rs
@@ -1,3 +1,5 @@
use std::time::Duration;

use clap::Parser;
use config::{builder::DefaultState, ConfigBuilder};
use libp2p::Multiaddr;
Expand All @@ -23,6 +25,10 @@ pub struct SignerCommand {
/// Aggregator endpoint URL.
#[clap(long, env = "AGGREGATOR_ENDPOINT")]
aggregator_endpoint: String,

/// Signer registration repeater delay in milliseconds (defaults to 1 hour)
#[clap(long, env = "SIGNER_REPEATER_DELAY", default_value_t = 3_600 * 1_000)]
signer_repeater_delay: u64,
}

impl SignerCommand {
Expand All @@ -32,8 +38,15 @@ impl SignerCommand {
let dial_to = self.dial_to.to_owned();
let addr: Multiaddr = format!("/ip4/0.0.0.0/tcp/{}", self.listen_port).parse()?;
let aggregator_endpoint = self.aggregator_endpoint.to_owned();

let mut relay = SignerRelay::start(&addr, &server_port, &aggregator_endpoint).await?;
let signer_repeater_delay = Duration::from_millis(self.signer_repeater_delay.to_owned());

let mut relay = SignerRelay::start(
&addr,
&server_port,
&aggregator_endpoint,
&signer_repeater_delay,
)
.await?;
if let Some(dial_to_address) = dial_to {
relay.dial_peer(dial_to_address.clone())?;
}
Expand Down
7 changes: 5 additions & 2 deletions mithril-relay/src/relay/signer.rs
Expand Up @@ -28,12 +28,15 @@ impl SignerRelay {
address: &Multiaddr,
server_port: &u16,
aggregator_endpoint: &str,
signer_repeater_delay: &Duration,
) -> StdResult<Self> {
debug!("SignerRelay: starting...");
let (signature_tx, signature_rx) = unbounded_channel::<RegisterSignatureMessage>();
let (signer_tx, signer_rx) = unbounded_channel::<RegisterSignerMessage>();
let repeat_frequency = Duration::from_secs(30);
let signer_repeater = Arc::new(MessageRepeater::new(signer_tx.clone(), repeat_frequency));
let signer_repeater = Arc::new(MessageRepeater::new(
signer_tx.clone(),
signer_repeater_delay.to_owned(),
));
let peer = Peer::new(address).start().await?;
let server = Self::start_http_server(
server_port,
Expand Down
14 changes: 10 additions & 4 deletions mithril-relay/tests/register_signer_signature.rs
@@ -1,4 +1,4 @@
use std::sync::Arc;
use std::{sync::Arc, time::Duration};

use libp2p::{gossipsub, Multiaddr};
use mithril_common::messages::{RegisterSignatureMessage, RegisterSignerMessage};
Expand Down Expand Up @@ -35,9 +35,15 @@ async fn should_receive_registrations_from_signers_when_subscribed_to_pubsub() {
let addr: Multiaddr = "/ip4/0.0.0.0/tcp/0".parse().unwrap();
let server_port = 0;
let aggregator_endpoint = "http://0.0.0.0:1234".to_string();
let mut signer_relay = SignerRelay::start(&addr, &server_port, &aggregator_endpoint)
.await
.expect("Relay start failed");
let signer_repeater_delay = Duration::from_secs(100);
let mut signer_relay = SignerRelay::start(
&addr,
&server_port,
&aggregator_endpoint,
&signer_repeater_delay,
)
.await
.expect("Relay start failed");
let relay_address = signer_relay.address();
let relay_peer_address = signer_relay.peer_address().unwrap();
info!("Test: relay_address is '{relay_address:?}'");
Expand Down

0 comments on commit 0291192

Please sign in to comment.