pub struct Retry {
pub max_attempts: u32,
pub backoff: Backoff,
}Expand description
Retry configuration for SNMP requests.
Controls how the client handles timeouts on UDP transports. TCP transports
ignore timeout retry configuration since the transport layer handles
reliability. SNMPv3 protocol correction is separate from timeout retry
policy: one authenticated time-window correction remains available with
Retry::none and on reliable transports.
Each SNMPv3 timeout transmission uses a fresh outer msgID while retaining the PDU request-id, and a response to any transmission in the current exchange may correlate. Stable request-id reuse matches deployed stacks but deliberately deviates from RFC 3414 Section 11.1. A protocol correction uses fresh message and PDU IDs and resets that acceptance window.
§Examples
use async_snmp::Retry;
use std::time::Duration;
// No retries
let retry = Retry::none();
// Fixed delay between retries
let retry = Retry::fixed(3, Duration::from_millis(200));
// Exponential backoff with jitter (1s, 2s, 4s, 5s, 5s)
let retry = Retry::exponential(5)
.max_delay(Duration::from_secs(5))
.jitter(0.25)
.build();Fields§
§max_attempts: u32Maximum number of retry attempts (0 = no retries, request sent once)
backoff: BackoffBackoff strategy between retries
Implementations§
Source§impl Retry
impl Retry
Sourcepub fn fixed(attempts: u32, delay: Duration) -> Self
pub fn fixed(attempts: u32, delay: Duration) -> Self
Fixed delay between retries.
§Arguments
attempts- Maximum number of retry attemptsdelay- Fixed delay before each retry
Sourcepub fn exponential(attempts: u32) -> RetryBuilder
pub fn exponential(attempts: u32) -> RetryBuilder
Start building an exponential backoff retry configuration.
Returns a RetryBuilder for configuring the backoff parameters.
§Arguments
attempts- Maximum number of retry attempts
§Example
use async_snmp::Retry;
use std::time::Duration;
let retry = Retry::exponential(5)
.max_delay(Duration::from_secs(5))
.jitter(0.25)
.build();Sourcepub fn compute_delay(&self, attempt: u32) -> Duration
pub fn compute_delay(&self, attempt: u32) -> Duration
Compute the delay before the next retry attempt.
Returns Duration::ZERO for Backoff::None.
Trait Implementations§
Source§impl From<RetryBuilder> for Retry
impl From<RetryBuilder> for Retry
Source§fn from(builder: RetryBuilder) -> Self
fn from(builder: RetryBuilder) -> Self
Auto Trait Implementations§
impl Freeze for Retry
impl RefUnwindSafe for Retry
impl Send for Retry
impl Sync for Retry
impl Unpin for Retry
impl UnsafeUnpin for Retry
impl UnwindSafe for Retry
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more