etcd_rs/cluster/
member_list.rs

1use crate::proto::etcdserverpb;
2use crate::{Member, ResponseHeader};
3
4#[derive(Debug, Clone)]
5pub struct MemberListRequest {
6    proto: etcdserverpb::MemberListRequest,
7}
8
9impl MemberListRequest {
10    pub fn new() -> Self {
11        Self {
12            proto: etcdserverpb::MemberListRequest {
13                // default true
14                // https://github.com/etcd-io/etcd/blob/v3.5.2/client/v3/cluster.go#L127
15                linearizable: true,
16            },
17        }
18    }
19}
20
21impl From<MemberListRequest> for etcdserverpb::MemberListRequest {
22    fn from(req: MemberListRequest) -> Self {
23        req.proto
24    }
25}
26
27#[derive(Debug, Clone)]
28pub struct MemberListResponse {
29    pub header: ResponseHeader,
30    pub members: Vec<Member>,
31}
32
33impl From<etcdserverpb::MemberListResponse> for MemberListResponse {
34    fn from(proto: etcdserverpb::MemberListResponse) -> Self {
35        Self {
36            header: From::from(proto.header.expect("must fetch header")),
37            members: proto.members.into_iter().map(From::from).collect(),
38        }
39    }
40}