teamtalk 6.0.0

TeamTalk SDK for Rust
Documentation
use std::time::Instant;

#[derive(Default)]
pub(crate) struct AutoReconnectState {
    pub(crate) enabled: bool,
    pub(crate) handler: Option<super::super::connection::ReconnectHandler>,
    pub(crate) login_handler: Option<super::super::connection::ReconnectHandler>,
    pub(crate) join_handler: Option<super::super::connection::ReconnectHandler>,
    pub(crate) params: Option<super::super::connection::ConnectParamsOwned>,
    pub(crate) last_channel: Option<crate::types::ChannelId>,
    pub(crate) last_channel_password: Option<String>,
    pub(crate) login: Option<super::super::users::LoginParams>,
    pub(crate) workflow: super::super::connection::ReconnectWorkflowConfig,
    pub(crate) phase_timeouts: super::super::connection::ReconnectPhaseTimeouts,
    pub(crate) login_gave_up: bool,
    pub(crate) join_gave_up: bool,
    pub(crate) recovery_completed: bool,
    pub(crate) pending_login_cmd: Option<i32>,
    pub(crate) pending_join_cmd: Option<i32>,
    pub(crate) connect_started_at: Option<Instant>,
    pub(crate) login_started_at: Option<Instant>,
    pub(crate) join_started_at: Option<Instant>,
    pub(crate) extra_events: Vec<crate::events::Event>,
    pub(crate) force_disconnect: bool,
}

impl AutoReconnectState {
    pub(crate) fn clear_connect_phase(&mut self) {
        self.connect_started_at = None;
    }

    pub(crate) fn clear_login_phase(&mut self) {
        self.login_started_at = None;
        self.pending_login_cmd = None;
    }

    pub(crate) fn clear_join_phase(&mut self) {
        self.join_started_at = None;
        self.pending_join_cmd = None;
    }

    pub(crate) fn clear_phase_tracking(&mut self) {
        self.clear_connect_phase();
        self.clear_login_phase();
        self.clear_join_phase();
    }
}