Skip to main content

timing_setters

Macro timing_setters 

Source
macro_rules! timing_setters {
    () => { ... };
    ($(#[$meta:meta])* ping_interval; $($rest:tt)*) => { ... };
    ($(#[$meta:meta])* stale_after; $($rest:tt)*) => { ... };
    ($(#[$meta:meta])* backoff; $($rest:tt)*) => { ... };
    ($(#[$meta:meta])* connect_timeout; $($rest:tt)*) => { ... };
    ($(#[$meta:meta])* max_connection_age; $($rest:tt)*) => { ... };
}
Expand description

Generates the timing setters a supervised builder offers, each writing the builder’s timing field, a Timing.

List the setters the builder wants, each with its own doc comment, since what a ping or the staleness window means differs between venues (D4, D5). The five are ping_interval(Duration), stale_after(Duration), backoff(initial, max), connect_timeout(Duration) and max_connection_age(Duration); ping_interval and max_connection_age store Some of the value.

use std::time::Duration;
use polyoxide_ws::Timing;

#[derive(Default)]
pub struct FeedBuilder {
    timing: Timing,
}

impl FeedBuilder {
    polyoxide_ws::timing_setters! {
        /// How long the feed may be silent, pings included.
        stale_after;
        /// Reconnect delay bounds.
        backoff;
    }
}

let builder = FeedBuilder::default().stale_after(Duration::from_secs(45));
assert_eq!(builder.timing.stale_after, Duration::from_secs(45));