pub enum RetryingStrategies {
DoNotRetry,
EndCommunications,
RetryWithBackoffUpTo(u8),
RetryYieldingForUpToMillis(u8),
RetrySpinningForUpToMillis(u8),
}
Expand description
Specifies how to behave when communication failures happen
Variants§
DoNotRetry
Simply ignore full buffer failures denials of sending & receiving messages, without retrying nor dropping the connection.
This option is acceptable when missing messages don’t disrupt the communications and when low latencies / realtime-ish behavior is required.
Set ConstConfig::sender_buffer & ConstConfig::receiver_buffer accordingly.
EndCommunications
Drops the connection on “buffer is full” errors, also without retrying
RetryWithBackoffUpTo(u8)
Retries, in case of “buffer is full” errors, ending the communications if success still can’t be achieved.
Uses an Exponential Backoff strategy with factor 2.526 and 20% jitter, giving the milliseconds to sleep between,
at most, the given number of attempts.
The total retrying time would be the sum of the geometric progression: (-1+2.526^n)/(1.526) – in milliseconds.
Example: for up to 5 minutes retrying, use 14 attempts.
RetryYieldingForUpToMillis(u8)
Retries, in case of “buffer is full” errors, ending the communications if success still can’t be achieved
during the specified milliseconds – during which retrying will be performed in a pool loop, yielding
to tokio before each attempt.
Use this option if low latency is desirable – but see also [Self::RetrySleepingArithmetically]
RetrySpinningForUpToMillis(u8)
Deprecated. Do not use – to be replaced or removed, as spinning doesn’t make sense in this lib