qiniu_http_client/client/backoff/
fixed.rs1use super::{Backoff, BackoffOptions, GotBackoffDuration};
2use qiniu_http::RequestParts as HttpRequestParts;
3use std::time::Duration;
4
5pub const NO_BACKOFF: FixedBackoff = FixedBackoff::new(Duration::from_nanos(0));
7
8#[derive(Debug, Clone, PartialEq, Eq)]
12pub struct FixedBackoff {
13 delay: Duration,
14}
15
16impl FixedBackoff {
17 #[inline]
19 pub const fn new(delay: Duration) -> Self {
20 Self { delay }
21 }
22
23 #[inline]
25 pub const fn delay(&self) -> Duration {
26 self.delay
27 }
28}
29
30impl Backoff for FixedBackoff {
31 #[inline]
32 fn time(&self, _request: &mut HttpRequestParts, _opts: BackoffOptions) -> GotBackoffDuration {
33 self.delay.into()
34 }
35}
36
37impl Default for FixedBackoff {
38 #[inline]
39 fn default() -> Self {
40 FixedBackoff::new(Duration::from_millis(100))
41 }
42}