use crate::{LinkSecret, StreamId};
pub const DEFAULT_READ_TAIL_OFFSET: u64 = 0;
pub const MIN_PLAYBACK_RATE: f64 = 0.1;
pub const MAX_PLAYBACK_RATE: f64 = 100.0;
pub const MAX_READ_WAIT_SECONDS: u32 = 60;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum ReadStart {
SeqNum(u64),
TimestampMs(u64),
TailOffset(u64),
}
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ReadStop {
pub count: Option<u64>,
pub until_timestamp_ms: Option<u64>,
pub wait_seconds: Option<u32>,
}
#[derive(Clone, Debug)]
pub struct ReadOptions {
pub stream_id: StreamId,
pub start: Option<ReadStart>,
pub stop: Option<ReadStop>,
pub rate: Option<f64>,
pub link_secret: Option<LinkSecret>,
}
impl ReadOptions {
pub fn new(stream_id: StreamId) -> Self {
Self {
stream_id,
start: None,
stop: None,
rate: None,
link_secret: None,
}
}
pub fn with_link_secret(mut self, link_secret: impl Into<LinkSecret>) -> Self {
self.link_secret = Some(link_secret.into());
self
}
}