forked from databendlabs/openraft
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Chore: move protobuf implementation to separate files
- Loading branch information
1 parent
fbf4ced
commit ce83ecc
Showing
9 changed files
with
146 additions
and
130 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
24 changes: 24 additions & 0 deletions
24
examples/raft-kv-memstore-grpc/src/pb_impl/impl_append_entries_request.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
use crate::pb; | ||
use crate::typ::AppendEntriesRequest; | ||
|
||
impl From<pb::AppendEntriesRequest> for AppendEntriesRequest { | ||
fn from(proto_req: pb::AppendEntriesRequest) -> Self { | ||
AppendEntriesRequest { | ||
vote: proto_req.vote.unwrap(), | ||
prev_log_id: proto_req.prev_log_id.map(|log_id| log_id.into()), | ||
entries: proto_req.entries, | ||
leader_commit: proto_req.leader_commit.map(|log_id| log_id.into()), | ||
} | ||
} | ||
} | ||
|
||
impl From<AppendEntriesRequest> for pb::AppendEntriesRequest { | ||
fn from(value: AppendEntriesRequest) -> Self { | ||
pb::AppendEntriesRequest { | ||
vote: Some(value.vote), | ||
prev_log_id: value.prev_log_id.map(|log_id| log_id.into()), | ||
entries: value.entries, | ||
leader_commit: value.leader_commit.map(|log_id| log_id.into()), | ||
} | ||
} | ||
} |
47 changes: 47 additions & 0 deletions
47
examples/raft-kv-memstore-grpc/src/pb_impl/impl_append_entries_response.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
use crate::pb; | ||
use crate::typ::AppendEntriesResponse; | ||
|
||
impl From<pb::AppendEntriesResponse> for AppendEntriesResponse { | ||
fn from(r: pb::AppendEntriesResponse) -> Self { | ||
if let Some(higher) = r.rejected_by { | ||
return AppendEntriesResponse::HigherVote(higher); | ||
} | ||
|
||
if r.conflict { | ||
return AppendEntriesResponse::Conflict; | ||
} | ||
|
||
if let Some(log_id) = r.last_log_id { | ||
AppendEntriesResponse::PartialSuccess(Some(log_id.into())) | ||
} else { | ||
AppendEntriesResponse::Success | ||
} | ||
} | ||
} | ||
|
||
impl From<AppendEntriesResponse> for pb::AppendEntriesResponse { | ||
fn from(r: AppendEntriesResponse) -> Self { | ||
match r { | ||
AppendEntriesResponse::Success => pb::AppendEntriesResponse { | ||
rejected_by: None, | ||
conflict: false, | ||
last_log_id: None, | ||
}, | ||
AppendEntriesResponse::PartialSuccess(p) => pb::AppendEntriesResponse { | ||
rejected_by: None, | ||
conflict: false, | ||
last_log_id: p.map(|log_id| log_id.into()), | ||
}, | ||
AppendEntriesResponse::Conflict => pb::AppendEntriesResponse { | ||
rejected_by: None, | ||
conflict: true, | ||
last_log_id: None, | ||
}, | ||
AppendEntriesResponse::HigherVote(v) => pb::AppendEntriesResponse { | ||
rejected_by: Some(v), | ||
conflict: false, | ||
last_log_id: None, | ||
}, | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
use crate::pb; | ||
use crate::typ::LogId; | ||
|
||
impl From<LogId> for pb::LogId { | ||
fn from(log_id: LogId) -> Self { | ||
pb::LogId { | ||
term: *log_id.committed_leader_id(), | ||
index: log_id.index(), | ||
} | ||
} | ||
} | ||
|
||
impl From<pb::LogId> for LogId { | ||
fn from(proto_log_id: pb::LogId) -> Self { | ||
LogId::new(proto_log_id.term, proto_log_id.index) | ||
} | ||
} |
19 changes: 19 additions & 0 deletions
19
examples/raft-kv-memstore-grpc/src/pb_impl/impl_vote_request.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
use crate::pb; | ||
use crate::typ::VoteRequest; | ||
|
||
impl From<VoteRequest> for pb::VoteRequest { | ||
fn from(vote_req: VoteRequest) -> Self { | ||
pb::VoteRequest { | ||
vote: Some(vote_req.vote), | ||
last_log_id: vote_req.last_log_id.map(|log_id| log_id.into()), | ||
} | ||
} | ||
} | ||
|
||
impl From<pb::VoteRequest> for VoteRequest { | ||
fn from(proto_vote_req: pb::VoteRequest) -> Self { | ||
let vote = proto_vote_req.vote.unwrap(); | ||
let last_log_id = proto_vote_req.last_log_id.map(|log_id| log_id.into()); | ||
VoteRequest::new(vote, last_log_id) | ||
} | ||
} |
20 changes: 20 additions & 0 deletions
20
examples/raft-kv-memstore-grpc/src/pb_impl/impl_vote_response.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
use crate::pb; | ||
use crate::typ::VoteResponse; | ||
|
||
impl From<VoteResponse> for pb::VoteResponse { | ||
fn from(vote_resp: VoteResponse) -> Self { | ||
pb::VoteResponse { | ||
vote: Some(vote_resp.vote), | ||
vote_granted: vote_resp.vote_granted, | ||
last_log_id: vote_resp.last_log_id.map(|log_id| log_id.into()), | ||
} | ||
} | ||
} | ||
|
||
impl From<pb::VoteResponse> for VoteResponse { | ||
fn from(proto_vote_resp: pb::VoteResponse) -> Self { | ||
let vote = proto_vote_resp.vote.unwrap(); | ||
let last_log_id = proto_vote_resp.last_log_id.map(|log_id| log_id.into()); | ||
VoteResponse::new(vote, last_log_id, proto_vote_resp.vote_granted) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,13 @@ | ||
//! Implements traits for protobuf types | ||
mod impl_append_entries_request; | ||
mod impl_append_entries_response; | ||
mod impl_client_write_response; | ||
mod impl_entry; | ||
mod impl_leader_id; | ||
mod impl_log_id; | ||
mod impl_membership; | ||
mod impl_snapshot_request; | ||
mod impl_vote; | ||
mod impl_vote_request; | ||
mod impl_vote_response; |
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters