krabka_protocol/opt/rustwide/workdir/generated/
UpdateRaftVoterResponse.owned.rs1use bytes::{Buf, BufMut};
4
5use crate::{
6 Decode, Encode, ProtocolError, UnknownTaggedFields,
7 codegen_helpers::is_default,
8 primitives::{
9 fixed::{get_i16, get_i32, put_i16, put_i32},
10 string_bytes::{
11 compact_string_len, get_compact_string_owned, get_string_owned, put_compact_string,
12 put_string, string_len,
13 },
14 },
15 tagged_fields::{WriteTaggedFields, encode_to_bytes, read_tagged_fields, tagged_fields_len},
16};
17pub const API_KEY: i16 = 82;
18pub const MIN_VERSION: i16 = 0;
19pub const MAX_VERSION: i16 = 0;
20pub const FLEXIBLE_MIN: i16 = 0;
21#[inline]
22#[must_use]
23pub fn is_flexible(version: i16) -> bool {
24 version >= FLEXIBLE_MIN
25}
26#[derive(Debug, Clone, PartialEq, Eq, Default)]
27pub struct UpdateRaftVoterResponse {
28 pub throttle_time_ms: i32,
29 pub error_code: i16,
30 pub current_leader: CurrentLeader,
31 pub unknown_tagged_fields: UnknownTaggedFields,
32}
33impl Encode for UpdateRaftVoterResponse {
34 fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
35 if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
36 return Err(ProtocolError::UnsupportedVersion {
37 api_key: API_KEY,
38 version,
39 });
40 }
41 let flex = is_flexible(version);
42 if version >= 0 {
43 put_i32(buf, self.throttle_time_ms);
44 }
45 if version >= 0 {
46 put_i16(buf, self.error_code);
47 }
48 if flex {
49 let mut tagged = WriteTaggedFields::new();
50 if !(is_default(&self.current_leader)) {
51 let payload = encode_to_bytes(self.current_leader.encoded_len(version), |b| {
52 self.current_leader.encode(b, version)?;
53 Ok(())
54 })?;
55 tagged.add(0, payload);
56 }
57 tagged.write(buf, &self.unknown_tagged_fields)?;
58 }
59 Ok(())
60 }
61 fn encoded_len(&self, version: i16) -> usize {
62 let flex = is_flexible(version);
63 let mut n: usize = 0;
64 if version >= 0 {
65 n += 4;
66 }
67 if version >= 0 {
68 n += 2;
69 }
70 if flex {
71 let mut known_pairs: Vec<(u32, usize)> = Vec::new();
72 if !(is_default(&self.current_leader)) {
73 known_pairs.push((0, self.current_leader.encoded_len(version)));
74 }
75 n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
76 }
77 n
78 }
79}
80impl Decode<'_> for UpdateRaftVoterResponse {
81 fn decode<B: Buf>(buf: &mut B, version: i16) -> Result<Self, ProtocolError> {
82 if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
83 return Err(ProtocolError::UnsupportedVersion {
84 api_key: API_KEY,
85 version,
86 });
87 }
88 let flex = is_flexible(version);
89 let mut out = Self::default();
90 if version >= 0 {
91 out.throttle_time_ms = get_i32(buf)?;
92 }
93 if version >= 0 {
94 out.error_code = get_i16(buf)?;
95 }
96 if flex {
97 let mut tag_current_leader = None;
98 out.unknown_tagged_fields = read_tagged_fields(buf, |tag, payload| match tag {
99 0 => {
100 tag_current_leader = Some({
101 let b: &mut &[u8] = payload;
102 CurrentLeader::decode(b, version)?
103 });
104 Ok(true)
105 }
106 _ => Ok(false),
107 })?;
108 if let Some(v) = tag_current_leader {
109 out.current_leader = v;
110 }
111 }
112 Ok(out)
113 }
114}
115#[cfg(test)]
116impl UpdateRaftVoterResponse {
117 #[must_use]
118 pub fn populated(version: i16) -> Self {
119 let mut m = Self::default();
120 if version >= 0 {
121 m.throttle_time_ms = 1i32;
122 }
123 if version >= 0 {
124 m.error_code = 1i16;
125 }
126 if version >= 0 {
127 m.current_leader = CurrentLeader::populated(version);
128 }
129 m
130 }
131}
132#[derive(Debug, Clone, PartialEq, Eq)]
133pub struct CurrentLeader {
134 pub leader_id: i32,
135 pub leader_epoch: i32,
136 pub host: String,
137 pub port: i32,
138 pub unknown_tagged_fields: UnknownTaggedFields,
139}
140impl Default for CurrentLeader {
141 fn default() -> Self {
142 Self {
143 leader_id: -1i32,
144 leader_epoch: -1i32,
145 host: String::new(),
146 port: 0i32,
147 unknown_tagged_fields: UnknownTaggedFields::default(),
148 }
149 }
150}
151impl Encode for CurrentLeader {
152 fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
153 let flex = version >= 0;
154 if version >= 0 {
155 put_i32(buf, self.leader_id);
156 }
157 if version >= 0 {
158 put_i32(buf, self.leader_epoch);
159 }
160 if version >= 0 {
161 if flex {
162 put_compact_string(buf, &self.host)?;
163 } else {
164 put_string(buf, &self.host)?;
165 }
166 }
167 if version >= 0 {
168 put_i32(buf, self.port);
169 }
170 if flex {
171 let tagged = WriteTaggedFields::new();
172 tagged.write(buf, &self.unknown_tagged_fields)?;
173 }
174 Ok(())
175 }
176 fn encoded_len(&self, version: i16) -> usize {
177 let flex = version >= 0;
178 let mut n: usize = 0;
179 if version >= 0 {
180 n += 4;
181 }
182 if version >= 0 {
183 n += 4;
184 }
185 if version >= 0 {
186 n += if flex {
187 compact_string_len(&self.host)
188 } else {
189 string_len(&self.host)
190 };
191 }
192 if version >= 0 {
193 n += 4;
194 }
195 if flex {
196 let known_pairs: Vec<(u32, usize)> = Vec::new();
197 n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
198 }
199 n
200 }
201}
202impl Decode<'_> for CurrentLeader {
203 fn decode<B: Buf>(buf: &mut B, version: i16) -> Result<Self, ProtocolError> {
204 let flex = version >= 0;
205 let mut out = Self::default();
206 if version >= 0 {
207 out.leader_id = get_i32(buf)?;
208 }
209 if version >= 0 {
210 out.leader_epoch = get_i32(buf)?;
211 }
212 if version >= 0 {
213 out.host = if flex {
214 get_compact_string_owned(buf)?
215 } else {
216 get_string_owned(buf)?
217 };
218 }
219 if version >= 0 {
220 out.port = get_i32(buf)?;
221 }
222 if flex {
223 out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| Ok(false))?;
224 }
225 Ok(out)
226 }
227}
228#[cfg(test)]
229impl CurrentLeader {
230 #[must_use]
231 pub fn populated(version: i16) -> Self {
232 let mut m = Self::default();
233 if version >= 0 {
234 m.leader_id = 1i32;
235 }
236 if version >= 0 {
237 m.leader_epoch = 1i32;
238 }
239 if version >= 0 {
240 m.host = "x".to_owned();
241 }
242 if version >= 0 {
243 m.port = 1i32;
244 }
245 m
246 }
247}
248#[must_use]
251#[allow(unused_comparisons)]
252pub fn default_json(_version: i16) -> ::serde_json::Value {
253 let mut obj = ::serde_json::Map::new();
254 obj.insert("throttleTimeMs".to_owned(), ::serde_json::json!(0));
255 obj.insert("errorCode".to_owned(), ::serde_json::json!(0));
256 obj.insert("currentLeader".to_owned(), {
257 let mut m = ::serde_json::Map::new();
258 m.insert("leaderId".to_owned(), ::serde_json::json!(-1));
259 m.insert("leaderEpoch".to_owned(), ::serde_json::json!(-1));
260 m.insert(
261 "host".to_owned(),
262 ::serde_json::Value::String(String::new()),
263 );
264 m.insert("port".to_owned(), ::serde_json::json!(0));
265 ::serde_json::Value::Object(m)
266 });
267 ::serde_json::Value::Object(obj)
268}
269#[must_use]
272pub fn tagged_fixture() -> UpdateRaftVoterResponse {
273 UpdateRaftVoterResponse {
274 current_leader: CurrentLeader {
275 leader_id: 1i32,
276 leader_epoch: 1i32,
277 host: "x".to_owned(),
278 port: 1i32,
279 ..CurrentLeader::default()
280 },
281 ..UpdateRaftVoterResponse::default()
282 }
283}
284#[must_use]
287pub fn tagged_fixture_json(_version: i16) -> ::serde_json::Value {
288 let mut m = ::serde_json::Map::new();
289 m.insert("throttleTimeMs".to_owned(), ::serde_json::json!(0));
290 m.insert("errorCode".to_owned(), ::serde_json::json!(0));
291 m.insert("currentLeader".to_owned(), {
292 let mut m = ::serde_json::Map::new();
293 m.insert("leaderId".to_owned(), ::serde_json::json!(1));
294 m.insert("leaderEpoch".to_owned(), ::serde_json::json!(1));
295 m.insert(
296 "host".to_owned(),
297 ::serde_json::Value::String("x".to_owned()),
298 );
299 m.insert("port".to_owned(), ::serde_json::json!(1));
300 ::serde_json::Value::Object(m)
301 });
302 ::serde_json::Value::Object(m)
303}