use std::time::SystemTime;
use async_trait::async_trait;
use crate::error::SteamError;
use super::server_record::ServerRecord;
#[async_trait]
pub trait IServerListProvider: Send + Sync {
async fn last_server_list_refresh(&self) -> Result<SystemTime, SteamError>;
async fn fetch_server_list(&self) -> Result<Vec<ServerRecord>, SteamError>;
async fn update_server_list(&self, endpoints: Vec<ServerRecord>) -> Result<(), SteamError>;
async fn load_servers(&self) -> Result<Vec<ServerRecord>, SteamError> {
self.fetch_server_list().await
}
async fn save_servers(&self, endpoints: Vec<ServerRecord>) -> Result<(), SteamError> {
self.update_server_list(endpoints).await
}
async fn resolve_servers(&self) -> Result<Vec<ServerRecord>, SteamError> {
self.fetch_server_list().await
}
}