29 lines
899 B
Rust
29 lines
899 B
Rust
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<String>,
|
|
client: NodeServiceClient<tonic::transport::Channel>,
|
|
device_capabilities: DeviceCapabilities,
|
|
}
|
|
|
|
impl PeerHandle {
|
|
async fn new(node_id: String, address: SocketAddr, description: Option<String>, device_capabilities: DeviceCapabilities) -> Result<Self, tonic::transport::Error> {
|
|
let endpoint = format!("http://{}", address);
|
|
let client = NodeServiceClient::connect(endpoint).await?
|
|
.accept_compressed(CompressionEncoding::Gzip);
|
|
|
|
Ok(Self {
|
|
node_id,
|
|
description,
|
|
address,
|
|
client,
|
|
device_capabilities,
|
|
})
|
|
}
|
|
}
|