use steam_enums::EResult;
use tracing::info;
use super::SteamClient;
use crate::error::SteamError;
use crate::internal::reconnect::ReconnectState;
impl SteamClient {
pub async fn relog(&mut self) -> Result<(), SteamError> {
if self.steam_id.is_none() {
return Err(SteamError::NotLoggedOn);
}
if self.auth.read().logon_details.is_none() {
return Err(SteamError::Other("No stored credentials for relog".to_string()));
}
info!("Initiating manual relog");
self.auth.write().relogging = true;
if let Some(conn) = self.connection.take() {
let _ = conn.close().await;
}
self.reconnect_manager.start_reconnection(EResult::NoConnection);
Ok(())
}
pub fn cancel_reconnect(&mut self) {
self.reconnect_manager.reset();
self.auth.write().relogging = false;
}
#[must_use]
pub fn is_reconnecting(&self) -> bool {
self.reconnect_manager.is_reconnecting()
}
#[must_use]
pub fn reconnect_state(&self) -> ReconnectState {
self.reconnect_manager.state()
}
}