use std::sync::Arc;
use grammers_mtsender::SenderPoolHandle;
use grammers_session::Session;
pub(crate) struct ClientInner {
pub(crate) session: Arc<dyn Session>,
pub(crate) api_id: i32,
pub(crate) handle: SenderPoolHandle,
pub(crate) configuration: ClientConfiguration,
pub(crate) auth_copied_to_dcs: tokio::sync::Mutex<Vec<i32>>,
}
#[derive(Clone)]
pub struct Client(pub(crate) Arc<ClientInner>);
use std::time::Duration;
pub struct ClientConfiguration {
pub retry_policy: Box<dyn super::RetryPolicy>,
pub auto_cache_peers: bool,
}
pub struct UpdatesConfiguration {
pub catch_up: bool,
pub update_queue_limit: Option<usize>,
}
impl Default for ClientConfiguration {
fn default() -> Self {
Self {
retry_policy: Box::new(super::AutoSleep {
threshold: Duration::from_secs(60),
io_errors_as_flood_of: Some(Duration::from_secs(1)),
}),
auto_cache_peers: true,
}
}
}
impl Default for UpdatesConfiguration {
fn default() -> Self {
Self {
catch_up: false,
update_queue_limit: Some(100),
}
}
}