use std::path::PathBuf;
use std::time::Duration;
#[derive(Debug, Clone, Default)]
pub enum PersistenceOption {
#[default]
Off,
Default,
Custom(PathBuf),
}
#[derive(Debug, Clone)]
pub struct ReconnectPolicy {
pub enabled: bool,
pub min_backoff: Duration,
pub max_backoff: Duration,
}
impl Default for ReconnectPolicy {
fn default() -> Self {
Self {
enabled: true,
min_backoff: Duration::from_secs(1),
max_backoff: Duration::from_secs(30),
}
}
}
#[derive(Debug, Clone)]
pub enum OrderbookTrackerOpt {
Off,
On { depth: usize },
}
impl Default for OrderbookTrackerOpt {
fn default() -> Self { Self::Off }
}
#[allow(dead_code)] #[derive(Debug, Clone)]
pub(crate) struct FeedOptions {
pub(crate) persistence: PersistenceOption,
pub(crate) reconnect: ReconnectPolicy,
pub(crate) orderbook: OrderbookTrackerOpt,
pub(crate) unsub_grace: Duration,
pub(crate) symbol_cache: bool,
pub(crate) storage_root_override: Option<PathBuf>,
pub(crate) broadcast_capacity: usize,
}
impl Default for FeedOptions {
fn default() -> Self {
Self {
persistence: PersistenceOption::Off,
reconnect: ReconnectPolicy::default(),
orderbook: OrderbookTrackerOpt::Off,
unsub_grace: Duration::from_secs(30),
symbol_cache: false,
storage_root_override: None,
broadcast_capacity: 1024,
}
}
}