#[derive(Clone)]
pub struct ShredStreamConfig {
pub auth_token: Option<String>,
pub connection_timeout_ms: u64,
pub request_timeout_ms: u64,
pub max_decoding_message_size: usize,
pub reconnect_delay_ms: u64,
pub max_reconnect_attempts: u32,
}
impl std::fmt::Debug for ShredStreamConfig {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("ShredStreamConfig")
.field("auth_token", &self.auth_token.as_ref().map(|_| "[REDACTED]"))
.field("connection_timeout_ms", &self.connection_timeout_ms)
.field("request_timeout_ms", &self.request_timeout_ms)
.field("max_decoding_message_size", &self.max_decoding_message_size)
.field("reconnect_delay_ms", &self.reconnect_delay_ms)
.field("max_reconnect_attempts", &self.max_reconnect_attempts)
.finish()
}
}
impl Default for ShredStreamConfig {
fn default() -> Self {
Self {
auth_token: None,
connection_timeout_ms: 8000,
request_timeout_ms: 15000,
max_decoding_message_size: 1024 * 1024 * 100, reconnect_delay_ms: 1000,
max_reconnect_attempts: 3,
}
}
}
impl ShredStreamConfig {
pub fn low_latency() -> Self {
Self {
auth_token: None,
connection_timeout_ms: 5000,
request_timeout_ms: 10000,
max_decoding_message_size: 1024 * 1024 * 50,
reconnect_delay_ms: 100,
max_reconnect_attempts: 1,
}
}
pub fn high_throughput() -> Self {
Self {
auth_token: None,
connection_timeout_ms: 10000,
request_timeout_ms: 30000,
max_decoding_message_size: 1024 * 1024 * 200,
reconnect_delay_ms: 2000,
max_reconnect_attempts: 5,
}
}
}