use std::{net::SocketAddr, sync::Arc};
use crate::{
cluster::{Node, NodeRef},
network::Connection,
routing::Shard,
};
#[derive(Debug, Clone)]
pub struct Coordinator {
connection_address: SocketAddr,
node: Arc<Node>,
shard: Option<Shard>,
}
impl Coordinator {
pub(crate) fn new(node: NodeRef, shard: Option<Shard>, connection: &Connection) -> Self {
Self {
connection_address: connection.get_connect_address(),
node: Arc::clone(node),
shard,
}
}
#[inline]
pub fn connection_address(&self) -> SocketAddr {
self.connection_address
}
#[inline]
pub fn node(&self) -> NodeRef<'_> {
&self.node
}
#[inline]
pub fn shard(&self) -> Option<Shard> {
self.shard
}
}