use crate::client_wrappers::client_wrapper::ClientWrapper;
use iggy_common::TransportProtocol;
#[derive(Debug, Clone)]
pub struct ConnectionInfo {
pub protocol: TransportProtocol,
pub server_address: String,
}
impl ClientWrapper {
pub async fn get_connection_info(&self) -> ConnectionInfo {
match self {
ClientWrapper::Iggy(_) => {
ConnectionInfo {
protocol: TransportProtocol::Tcp,
server_address: String::from("unknown"),
}
}
ClientWrapper::Tcp(client) => ConnectionInfo {
protocol: TransportProtocol::Tcp,
server_address: client.current_server_address.lock().await.clone(),
},
ClientWrapper::Quic(client) => ConnectionInfo {
protocol: TransportProtocol::Quic,
server_address: client.current_server_address.lock().await.clone(),
},
ClientWrapper::Http(client) => ConnectionInfo {
protocol: TransportProtocol::Http,
server_address: client.api_url.to_string(),
},
ClientWrapper::WebSocket(client) => ConnectionInfo {
protocol: TransportProtocol::WebSocket,
server_address: client.current_server_address.lock().await.clone(),
},
}
}
}