From df3edf9f1dc9ca3f422ea2c43a5b3f5b491c1ace Mon Sep 17 00:00:00 2001 From: Nils Andreas Svee Date: Tue, 28 Apr 2026 18:23:28 +0700 Subject: [PATCH] feat(client): add configuration options for probe timing and budgets --- crates/irtt-client/src/config.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/crates/irtt-client/src/config.rs b/crates/irtt-client/src/config.rs index 8e4f634..22401aa 100644 --- a/crates/irtt-client/src/config.rs +++ b/crates/irtt-client/src/config.rs @@ -12,6 +12,8 @@ pub(crate) const DEFAULT_OPEN_TIMEOUTS: [Duration; 4] = [ Duration::from_secs(8), ]; pub(crate) const MIN_OPEN_TIMEOUT: Duration = Duration::from_millis(200); +pub(crate) const DEFAULT_PROBE_TIMEOUT: Duration = Duration::from_secs(4); +pub(crate) const DEFAULT_MAX_PENDING: usize = 4096; #[derive(Debug, Clone, PartialEq, Eq)] pub struct ClientConfig { @@ -29,6 +31,8 @@ pub struct ClientConfig { pub run_mode: RunMode, pub negotiation_policy: NegotiationPolicy, pub socket_config: SocketConfig, + pub probe_timeout: Duration, + pub max_pending_probes: usize, } impl Default for ClientConfig { @@ -48,6 +52,8 @@ impl Default for ClientConfig { run_mode: RunMode::Normal, negotiation_policy: NegotiationPolicy::Strict, socket_config: SocketConfig::default(), + probe_timeout: DEFAULT_PROBE_TIMEOUT, + max_pending_probes: DEFAULT_MAX_PENDING, } } } @@ -72,3 +78,14 @@ pub enum RunMode { Normal, NoTest, } + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub struct RecvBudget { + pub max_packets: usize, +} + +impl Default for RecvBudget { + fn default() -> Self { + Self { max_packets: 64 } + } +}