d_engine/client/
cluster.rs

1use super::ConnectionPool;
2use crate::proto::NodeMeta;
3use crate::Result;
4
5/// Cluster administration interface
6///
7/// Currently supports member discovery. Node management operations
8/// will be added in future releases.
9pub struct ClusterClient {
10    pool: ConnectionPool,
11}
12
13impl ClusterClient {
14    pub(crate) fn new(pool: ConnectionPool) -> Self {
15        Self { pool }
16    }
17
18    /// Lists all cluster members with metadata
19    ///
20    /// Returns node information including:
21    /// - IP address
22    /// - Port
23    /// - Role (Leader/Follower)
24    pub async fn list_members(&self) -> Result<Vec<NodeMeta>> {
25        Ok(self.pool.get_all_members())
26    }
27
28    /// [Unimplemented] Adds new node to cluster
29    #[doc(hidden)]
30    pub async fn add_member(
31        &self,
32        _node: NodeMeta,
33    ) -> Result<()> {
34        //TOOD: in next release
35        Ok(())
36    }
37}