ton_lib 0.0.38

A collection of types and utilities for interacting with the TON network
use std::time::Duration;

use crate::clients::net_config::TonNetConfig;
use crate::error::TLError;

#[derive(Debug, Clone)]
pub struct LiteClientConfig {
    pub net_config: TonNetConfig,
    pub connections_per_node: u32,
    pub conn_timeout: Duration,
    pub default_req_params: LiteReqParams,
    pub last_seqno_polling_period: Duration,
    pub metrics_enabled: bool,
}

#[derive(Debug, Clone, Copy)]
pub struct LiteReqParams {
    pub retries_count: u32,
    pub retry_waiting: Duration,
    pub query_timeout: Duration,
}

impl LiteReqParams {
    pub fn new(retries: u32, retry_waiting: u64, query_timeout: u64) -> Self {
        Self {
            retries_count: retries,
            retry_waiting: Duration::from_millis(retry_waiting),
            query_timeout: Duration::from_millis(query_timeout),
        }
    }
}

impl LiteClientConfig {
    pub fn new(net_config: &str) -> Result<Self, TLError> {
        Ok(Self {
            net_config: TonNetConfig::new(net_config)?,
            connections_per_node: 1,
            conn_timeout: Duration::from_millis(500),
            default_req_params: LiteReqParams::new(10, 100, 5000),
            last_seqno_polling_period: Duration::from_millis(5000),
            metrics_enabled: true,
        })
    }
}