use std::net::SocketAddr; use tonic::codec::CompressionEncoding; use crate::node_service::node_service_client::NodeServiceClient; use crate::topology::DeviceCapabilities; struct PeerHandle { node_id: String, address: SocketAddr, description: Option, client: NodeServiceClient, device_capabilities: DeviceCapabilities, } impl PeerHandle { async fn new(node_id: String, address: SocketAddr, description: Option, device_capabilities: DeviceCapabilities) -> Result { let endpoint = format!("http://{}", address); let client = NodeServiceClient::connect(endpoint).await? .accept_compressed(CompressionEncoding::Gzip); Ok(Self { node_id, description, address, client, device_capabilities, }) } }