openstack_keystone_distributed_storage/proto_impl/
impl_vote_response.rs1use crate::types::VoteResponse;
15use crate::{StoreError, pb};
16
17impl From<VoteResponse> for pb::raft::VoteResponse {
18 fn from(vote_resp: VoteResponse) -> Self {
19 pb::raft::VoteResponse {
20 vote: Some(vote_resp.vote),
21 vote_granted: vote_resp.vote_granted,
22 last_log_id: vote_resp.last_log_id.map(|log_id| log_id.into()),
23 }
24 }
25}
26
27impl TryFrom<pb::raft::VoteResponse> for VoteResponse {
28 type Error = StoreError;
29 fn try_from(proto_vote_resp: pb::raft::VoteResponse) -> Result<Self, Self::Error> {
30 let vote = proto_vote_resp
31 .vote
32 .ok_or_else(|| StoreError::RaftMissingParameter("VoteResponse.Vote".into()))?;
33 let last_log_id = proto_vote_resp.last_log_id.map(|log_id| log_id.into());
34 Ok(VoteResponse::new(
35 vote,
36 last_log_id,
37 proto_vote_resp.vote_granted,
38 ))
39 }
40}