use crate::client::config::ClientConfig;
use crate::common::compression::CompressionAlgorithm;
use crate::common::config_types::{HeartbeatConfig, TlsConfig, TransportProtocol};
use crate::common::device::DeviceInfo;
use crate::common::protocol::SerializationFormat;
use std::time::Duration;
pub struct BaseClientBuilderConfig {
pub config: ClientConfig,
}
impl BaseClientBuilderConfig {
pub fn new(server_url: impl Into<String>) -> Self {
Self {
config: ClientConfig::new(server_url.into()),
}
}
#[must_use]
pub fn with_protocol(mut self, protocol: TransportProtocol) -> Self {
self.config.transport = protocol;
self
}
#[must_use]
pub fn with_protocol_race(mut self, protocols: Vec<TransportProtocol>) -> Self {
self.config = self.config.with_protocol_race(protocols);
self
}
#[must_use]
pub fn with_protocol_url(mut self, protocol: TransportProtocol, url: String) -> Self {
self.config = self.config.with_protocol_url(protocol, url);
self
}
#[must_use]
pub fn with_user_id(mut self, user_id: String) -> Self {
self.config = self.config.with_user_id(user_id);
self
}
#[must_use]
pub fn with_token(mut self, token: String) -> Self {
self.config = self.config.with_token(token);
self
}
#[must_use]
pub fn with_format(mut self, format: SerializationFormat) -> Self {
self.config = self.config.with_format(format);
self
}
#[must_use]
pub fn with_compression(mut self, compression: CompressionAlgorithm) -> Self {
self.config = self.config.with_compression(compression);
self
}
#[must_use]
pub fn force_format(mut self, format: SerializationFormat) -> Self {
self.config = self.config.force_format(format);
self
}
#[must_use]
pub fn force_compression(mut self, compression: CompressionAlgorithm) -> Self {
self.config = self.config.force_compression(compression);
self
}
#[must_use]
pub fn with_device_info(mut self, device_info: DeviceInfo) -> Self {
self.config = self.config.with_device_info(device_info);
self
}
#[must_use]
pub fn with_heartbeat(mut self, heartbeat: HeartbeatConfig) -> Self {
self.config = self.config.with_heartbeat(heartbeat);
self
}
#[must_use]
pub fn with_tls(mut self, tls: TlsConfig) -> Self {
self.config = self.config.with_tls(tls);
self
}
#[must_use]
pub fn with_connect_timeout(mut self, timeout: Duration) -> Self {
self.config = self.config.with_connect_timeout(timeout);
self
}
#[must_use]
pub fn with_race_timeout(mut self, timeout: Duration) -> Self {
self.config = self.config.with_race_timeout(timeout);
self
}
#[must_use]
pub fn with_reconnect_interval(mut self, interval: Duration) -> Self {
self.config = self.config.with_reconnect_interval(interval);
self
}
#[must_use]
pub fn with_max_reconnect_attempts(mut self, max: Option<u32>) -> Self {
self.config = self.config.with_max_reconnect_attempts(max);
self
}
#[must_use]
pub fn enable_router(mut self) -> Self {
self.config = self.config.enable_router();
self
}
}