kuberic_core/grpc/
convert.rs1use crate::proto;
2use crate::types::{
3 Epoch, OpenMode, ReplicaInfo, ReplicaSetConfig, ReplicaSetQuorumMode, ReplicaStatus, Role,
4};
5
6impl From<Epoch> for proto::EpochProto {
9 fn from(e: Epoch) -> Self {
10 proto::EpochProto {
11 data_loss_number: e.data_loss_number,
12 configuration_number: e.configuration_number,
13 }
14 }
15}
16
17impl From<proto::EpochProto> for Epoch {
18 fn from(e: proto::EpochProto) -> Self {
19 Epoch::new(e.data_loss_number, e.configuration_number)
20 }
21}
22
23impl From<Role> for proto::RoleProto {
26 fn from(r: Role) -> Self {
27 match r {
28 Role::None => proto::RoleProto::RoleNone,
29 Role::Primary => proto::RoleProto::RolePrimary,
30 Role::ActiveSecondary => proto::RoleProto::RoleActiveSecondary,
31 Role::IdleSecondary => proto::RoleProto::RoleIdleSecondary,
32 }
33 }
34}
35
36impl From<proto::RoleProto> for Role {
37 fn from(r: proto::RoleProto) -> Self {
38 match r {
39 proto::RoleProto::RoleNone => Role::None,
40 proto::RoleProto::RolePrimary => Role::Primary,
41 proto::RoleProto::RoleActiveSecondary => Role::ActiveSecondary,
42 proto::RoleProto::RoleIdleSecondary => Role::IdleSecondary,
43 }
44 }
45}
46
47impl From<i32> for Role {
48 fn from(v: i32) -> Self {
49 proto::RoleProto::try_from(v)
50 .unwrap_or(proto::RoleProto::RoleNone)
51 .into()
52 }
53}
54
55impl From<OpenMode> for proto::OpenModeProto {
58 fn from(m: OpenMode) -> Self {
59 match m {
60 OpenMode::New => proto::OpenModeProto::OpenNew,
61 OpenMode::Existing => proto::OpenModeProto::OpenExisting,
62 }
63 }
64}
65
66impl From<proto::OpenModeProto> for OpenMode {
67 fn from(m: proto::OpenModeProto) -> Self {
68 match m {
69 proto::OpenModeProto::OpenNew => OpenMode::New,
70 proto::OpenModeProto::OpenExisting => OpenMode::Existing,
71 }
72 }
73}
74
75impl From<i32> for OpenMode {
76 fn from(v: i32) -> Self {
77 proto::OpenModeProto::try_from(v)
78 .unwrap_or(proto::OpenModeProto::OpenNew)
79 .into()
80 }
81}
82
83impl From<ReplicaSetQuorumMode> for proto::QuorumModeProto {
86 fn from(m: ReplicaSetQuorumMode) -> Self {
87 match m {
88 ReplicaSetQuorumMode::All => proto::QuorumModeProto::QuorumAll,
89 ReplicaSetQuorumMode::Write => proto::QuorumModeProto::QuorumWrite,
90 }
91 }
92}
93
94impl From<proto::QuorumModeProto> for ReplicaSetQuorumMode {
95 fn from(m: proto::QuorumModeProto) -> Self {
96 match m {
97 proto::QuorumModeProto::QuorumAll => ReplicaSetQuorumMode::All,
98 proto::QuorumModeProto::QuorumWrite => ReplicaSetQuorumMode::Write,
99 }
100 }
101}
102
103impl From<i32> for ReplicaSetQuorumMode {
104 fn from(v: i32) -> Self {
105 proto::QuorumModeProto::try_from(v)
106 .unwrap_or(proto::QuorumModeProto::QuorumAll)
107 .into()
108 }
109}
110
111impl From<ReplicaInfo> for proto::ReplicaInfoProto {
114 fn from(r: ReplicaInfo) -> Self {
115 proto::ReplicaInfoProto {
116 id: r.id,
117 role: proto::RoleProto::from(r.role) as i32,
118 status: match r.status {
119 ReplicaStatus::Up => proto::ReplicaStatusProto::StatusUp as i32,
120 ReplicaStatus::Down => proto::ReplicaStatusProto::StatusDown as i32,
121 },
122 replicator_address: r.replicator_address,
123 current_progress: r.current_progress,
124 catch_up_capability: r.catch_up_capability,
125 must_catch_up: r.must_catch_up,
126 }
127 }
128}
129
130impl From<proto::ReplicaInfoProto> for ReplicaInfo {
131 fn from(r: proto::ReplicaInfoProto) -> Self {
132 ReplicaInfo {
133 id: r.id,
134 role: Role::from(r.role),
135 status: if r.status == proto::ReplicaStatusProto::StatusUp as i32 {
136 ReplicaStatus::Up
137 } else {
138 ReplicaStatus::Down
139 },
140 replicator_address: r.replicator_address,
141 current_progress: r.current_progress,
142 catch_up_capability: r.catch_up_capability,
143 must_catch_up: r.must_catch_up,
144 }
145 }
146}
147
148impl From<ReplicaSetConfig> for proto::ReplicaSetConfigProto {
151 fn from(c: ReplicaSetConfig) -> Self {
152 proto::ReplicaSetConfigProto {
153 members: c.members.into_iter().map(|r| r.into()).collect(),
154 write_quorum: c.write_quorum,
155 }
156 }
157}
158
159impl From<proto::ReplicaSetConfigProto> for ReplicaSetConfig {
160 fn from(c: proto::ReplicaSetConfigProto) -> Self {
161 ReplicaSetConfig {
162 members: c.members.into_iter().map(|r| r.into()).collect(),
163 write_quorum: c.write_quorum,
164 }
165 }
166}