use std::sync::Arc;
use crate::callbacks::AckCallback;
use crate::databricks::zerobus::RecordType;
use crate::stream_options::defaults;
#[derive(Clone)]
pub struct StreamConfigurationOptions {
pub max_inflight_requests: usize,
pub recovery: bool,
pub recovery_timeout_ms: u64,
pub recovery_backoff_ms: u64,
pub recovery_retries: u32,
pub server_lack_of_ack_timeout_ms: u64,
pub flush_timeout_ms: u64,
pub record_type: RecordType,
pub stream_paused_max_wait_time_ms: Option<u64>,
pub ack_callback: Option<Arc<dyn AckCallback>>,
pub callback_max_wait_time_ms: Option<u64>,
}
impl Default for StreamConfigurationOptions {
fn default() -> Self {
Self {
max_inflight_requests: 1_000_000,
recovery: defaults::RECOVERY,
recovery_timeout_ms: defaults::RECOVERY_TIMEOUT_MS,
recovery_backoff_ms: defaults::RECOVERY_BACKOFF_MS,
recovery_retries: defaults::RECOVERY_RETRIES,
server_lack_of_ack_timeout_ms: defaults::SERVER_LACK_OF_ACK_TIMEOUT_MS,
flush_timeout_ms: defaults::FLUSH_TIMEOUT_MS,
record_type: RecordType::Proto,
stream_paused_max_wait_time_ms: None,
ack_callback: None,
callback_max_wait_time_ms: Some(defaults::CALLBACK_MAX_WAIT_TIME_MS),
}
}
}