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}