inve_etcd/cluster/
member_update.rs

1use crate::proto::etcdserverpb;
2use crate::{Member, ResponseHeader};
3
4#[derive(Debug, Clone)]
5pub struct MemberUpdateRequest {
6    proto: etcdserverpb::MemberUpdateRequest,
7}
8
9impl MemberUpdateRequest {
10    pub fn new(member_id: u64, peer_urls: impl Into<Vec<String>>) -> Self {
11        Self {
12            proto: etcdserverpb::MemberUpdateRequest {
13                id: member_id,
14                peer_ur_ls: peer_urls.into(),
15            },
16        }
17    }
18}
19
20impl<I> From<(u64, I)> for MemberUpdateRequest
21where
22    I: Into<Vec<String>>,
23{
24    fn from((id, peer_urls): (u64, I)) -> Self {
25        Self::new(id, peer_urls)
26    }
27}
28
29impl From<MemberUpdateRequest> for etcdserverpb::MemberUpdateRequest {
30    fn from(req: MemberUpdateRequest) -> Self {
31        req.proto
32    }
33}
34
35#[derive(Debug, Clone)]
36pub struct MemberUpdateResponse {
37    pub header: ResponseHeader,
38    pub members: Vec<Member>,
39}
40
41impl From<etcdserverpb::MemberUpdateResponse> for MemberUpdateResponse {
42    fn from(proto: etcdserverpb::MemberUpdateResponse) -> Self {
43        Self {
44            header: From::from(proto.header.expect("must fetch header")),
45            members: proto.members.into_iter().map(From::from).collect(),
46        }
47    }
48}