Skip to content

Commit fb48cea

Browse files
committed
feat: add configuration parameter for signer registration repeater delay in relay
1 parent ef04157 commit fb48cea

File tree

3 files changed

+30
-8
lines changed

3 files changed

+30
-8
lines changed

mithril-relay/src/commands/signer.rs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
use std::time::Duration;
2+
13
use clap::Parser;
24
use config::{builder::DefaultState, ConfigBuilder};
35
use libp2p::Multiaddr;
@@ -23,6 +25,10 @@ pub struct SignerCommand {
2325
/// Aggregator endpoint URL.
2426
#[clap(long, env = "AGGREGATOR_ENDPOINT")]
2527
aggregator_endpoint: String,
28+
29+
/// Signer registration repeater delay in milliseconds (defaults to 1 hour)
30+
#[clap(long, env = "SIGNER_REPEATER_DELAY", default_value_t = 3_600 * 1_000)]
31+
signer_repeater_delay: u64,
2632
}
2733

2834
impl SignerCommand {
@@ -32,8 +38,15 @@ impl SignerCommand {
3238
let dial_to = self.dial_to.to_owned();
3339
let addr: Multiaddr = format!("/ip4/0.0.0.0/tcp/{}", self.listen_port).parse()?;
3440
let aggregator_endpoint = self.aggregator_endpoint.to_owned();
35-
36-
let mut relay = SignerRelay::start(&addr, &server_port, &aggregator_endpoint).await?;
41+
let signer_repeater_delay = Duration::from_millis(self.signer_repeater_delay.to_owned());
42+
43+
let mut relay = SignerRelay::start(
44+
&addr,
45+
&server_port,
46+
&aggregator_endpoint,
47+
&signer_repeater_delay,
48+
)
49+
.await?;
3750
if let Some(dial_to_address) = dial_to {
3851
relay.dial_peer(dial_to_address.clone())?;
3952
}

mithril-relay/src/relay/signer.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,15 @@ impl SignerRelay {
2828
address: &Multiaddr,
2929
server_port: &u16,
3030
aggregator_endpoint: &str,
31+
signer_repeater_delay: &Duration,
3132
) -> StdResult<Self> {
3233
debug!("SignerRelay: starting...");
3334
let (signature_tx, signature_rx) = unbounded_channel::<RegisterSignatureMessage>();
3435
let (signer_tx, signer_rx) = unbounded_channel::<RegisterSignerMessage>();
35-
let repeat_frequency = Duration::from_secs(30);
36-
let signer_repeater = Arc::new(MessageRepeater::new(signer_tx.clone(), repeat_frequency));
36+
let signer_repeater = Arc::new(MessageRepeater::new(
37+
signer_tx.clone(),
38+
signer_repeater_delay.to_owned(),
39+
));
3740
let peer = Peer::new(address).start().await?;
3841
let server = Self::start_http_server(
3942
server_port,

mithril-relay/tests/register_signer_signature.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::sync::Arc;
1+
use std::{sync::Arc, time::Duration};
22

33
use libp2p::{gossipsub, Multiaddr};
44
use mithril_common::messages::{RegisterSignatureMessage, RegisterSignerMessage};
@@ -35,9 +35,15 @@ async fn should_receive_registrations_from_signers_when_subscribed_to_pubsub() {
3535
let addr: Multiaddr = "/ip4/0.0.0.0/tcp/0".parse().unwrap();
3636
let server_port = 0;
3737
let aggregator_endpoint = "http://0.0.0.0:1234".to_string();
38-
let mut signer_relay = SignerRelay::start(&addr, &server_port, &aggregator_endpoint)
39-
.await
40-
.expect("Relay start failed");
38+
let signer_repeater_delay = Duration::from_secs(100);
39+
let mut signer_relay = SignerRelay::start(
40+
&addr,
41+
&server_port,
42+
&aggregator_endpoint,
43+
&signer_repeater_delay,
44+
)
45+
.await
46+
.expect("Relay start failed");
4147
let relay_address = signer_relay.address();
4248
let relay_peer_address = signer_relay.peer_address().unwrap();
4349
info!("Test: relay_address is '{relay_address:?}'");

0 commit comments

Comments
 (0)