From d7716ad8757eea2fde545d5172110ecebd398233 Mon Sep 17 00:00:00 2001 From: Alexey <247128645+axkurcom@users.noreply.github.com> Date: Fri, 6 Mar 2026 18:52:17 +0300 Subject: [PATCH] Upstream API Policy Snapshot --- src/transport/upstream.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/transport/upstream.rs b/src/transport/upstream.rs index b9db0eb..84c6fdf 100644 --- a/src/transport/upstream.rs +++ b/src/transport/upstream.rs @@ -202,6 +202,15 @@ pub struct UpstreamApiSnapshot { pub upstreams: Vec, } +#[derive(Debug, Clone, Copy)] +pub struct UpstreamApiPolicySnapshot { + pub connect_retry_attempts: u32, + pub connect_retry_backoff_ms: u64, + pub connect_budget_ms: u64, + pub unhealthy_fail_threshold: u32, + pub connect_failfast_hard_errors: bool, +} + #[derive(Debug, Clone, Copy, PartialEq, Eq)] pub struct UpstreamEgressInfo { pub route_kind: UpstreamRouteKind, @@ -315,6 +324,16 @@ impl UpstreamManager { Some(UpstreamApiSnapshot { summary, upstreams }) } + pub fn api_policy_snapshot(&self) -> UpstreamApiPolicySnapshot { + UpstreamApiPolicySnapshot { + connect_retry_attempts: self.connect_retry_attempts, + connect_retry_backoff_ms: self.connect_retry_backoff.as_millis() as u64, + connect_budget_ms: self.connect_budget.as_millis() as u64, + unhealthy_fail_threshold: self.unhealthy_fail_threshold, + connect_failfast_hard_errors: self.connect_failfast_hard_errors, + } + } + #[cfg(unix)] fn resolve_interface_addrs(name: &str, want_ipv6: bool) -> Vec { use nix::ifaddrs::getifaddrs;