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