krabka_protocol/opt/rustwide/workdir/generated/
UpdateRaftVoterRequest.owned.rs1use bytes::{Buf, BufMut};
4
5use crate::{
6 Decode, Encode, ProtocolError, UnknownTaggedFields,
7 primitives::{
8 array::{array_len_prefix_len, get_array_len, put_array_len},
9 fixed::{get_i16, get_i32, get_u16, put_i16, put_i32, put_u16},
10 string_bytes::{
11 compact_nullable_string_len, compact_string_len, get_compact_nullable_string_owned,
12 get_compact_string_owned, get_nullable_string_owned, get_string_owned,
13 nullable_string_len, put_compact_nullable_string, put_compact_string,
14 put_nullable_string, put_string, string_len,
15 },
16 uuid::{Uuid, get_uuid, put_uuid},
17 },
18 tagged_fields::{WriteTaggedFields, read_tagged_fields, tagged_fields_len},
19};
20pub const API_KEY: i16 = 82;
21pub const MIN_VERSION: i16 = 0;
22pub const MAX_VERSION: i16 = 0;
23pub const LATEST_STABLE_VERSION: i16 = 0;
24pub const FLEXIBLE_MIN: i16 = 0;
25#[inline]
26#[must_use]
27pub fn is_flexible(version: i16) -> bool {
28 version >= FLEXIBLE_MIN
29}
30#[derive(Debug, Clone, PartialEq, Eq)]
31pub struct UpdateRaftVoterRequest {
32 pub cluster_id: Option<String>,
33 pub current_leader_epoch: i32,
34 pub voter_id: i32,
35 pub voter_directory_id: Uuid,
36 pub listeners: Vec<Listener>,
37 pub k_raft_version_feature: KRaftVersionFeature,
38 pub unknown_tagged_fields: UnknownTaggedFields,
39}
40impl Default for UpdateRaftVoterRequest {
41 fn default() -> Self {
42 Self {
43 cluster_id: Some(String::new()),
44 current_leader_epoch: 0i32,
45 voter_id: 0i32,
46 voter_directory_id: Uuid::default(),
47 listeners: Vec::new(),
48 k_raft_version_feature: KRaftVersionFeature::default(),
49 unknown_tagged_fields: UnknownTaggedFields::default(),
50 }
51 }
52}
53impl Encode for UpdateRaftVoterRequest {
54 fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
55 if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
56 return Err(ProtocolError::UnsupportedVersion {
57 api_key: API_KEY,
58 version,
59 });
60 }
61 let flex = is_flexible(version);
62 if version >= 0 {
63 if flex {
64 put_compact_nullable_string(buf, self.cluster_id.as_deref())?;
65 } else {
66 put_nullable_string(buf, self.cluster_id.as_deref())?;
67 }
68 }
69 if version >= 0 {
70 put_i32(buf, self.current_leader_epoch);
71 }
72 if version >= 0 {
73 put_i32(buf, self.voter_id);
74 }
75 if version >= 0 {
76 put_uuid(buf, self.voter_directory_id);
77 }
78 if version >= 0 {
79 {
80 put_array_len(buf, (self.listeners).len(), flex)?;
81 for it in &self.listeners {
82 it.encode(buf, version)?;
83 }
84 }
85 }
86 if version >= 0 {
87 self.k_raft_version_feature.encode(buf, version)?;
88 }
89 if flex {
90 let tagged = WriteTaggedFields::new();
91 tagged.write(buf, &self.unknown_tagged_fields)?;
92 }
93 Ok(())
94 }
95 fn encoded_len(&self, version: i16) -> usize {
96 let flex = is_flexible(version);
97 let mut n: usize = 0;
98 if version >= 0 {
99 n += if flex {
100 compact_nullable_string_len(self.cluster_id.as_deref())
101 } else {
102 nullable_string_len(self.cluster_id.as_deref())
103 };
104 }
105 if version >= 0 {
106 n += 4;
107 }
108 if version >= 0 {
109 n += 4;
110 }
111 if version >= 0 {
112 n += 16;
113 }
114 if version >= 0 {
115 n += {
116 let prefix = array_len_prefix_len((self.listeners).len(), flex);
117 let body: usize = (self.listeners)
118 .iter()
119 .map(|it| it.encoded_len(version))
120 .sum();
121 prefix + body
122 };
123 }
124 if version >= 0 {
125 n += self.k_raft_version_feature.encoded_len(version);
126 }
127 if flex {
128 let known_pairs: Vec<(u32, usize)> = Vec::new();
129 n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
130 }
131 n
132 }
133}
134impl Decode<'_> for UpdateRaftVoterRequest {
135 fn decode<B: Buf>(buf: &mut B, version: i16) -> Result<Self, ProtocolError> {
136 if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
137 return Err(ProtocolError::UnsupportedVersion {
138 api_key: API_KEY,
139 version,
140 });
141 }
142 let flex = is_flexible(version);
143 let mut out = Self::default();
144 if version >= 0 {
145 out.cluster_id = if flex {
146 get_compact_nullable_string_owned(buf)?
147 } else {
148 get_nullable_string_owned(buf)?
149 };
150 }
151 if version >= 0 {
152 out.current_leader_epoch = get_i32(buf)?;
153 }
154 if version >= 0 {
155 out.voter_id = get_i32(buf)?;
156 }
157 if version >= 0 {
158 out.voter_directory_id = get_uuid(buf)?;
159 }
160 if version >= 0 {
161 out.listeners = {
162 let n = get_array_len(buf, flex)?;
163 let mut v = Vec::with_capacity(n);
164 for _ in 0..n {
165 v.push(Listener::decode(buf, version)?);
166 }
167 v
168 };
169 }
170 if version >= 0 {
171 out.k_raft_version_feature = KRaftVersionFeature::decode(buf, version)?;
172 }
173 if flex {
174 out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| Ok(false))?;
175 }
176 Ok(out)
177 }
178}
179#[cfg(test)]
180impl UpdateRaftVoterRequest {
181 #[must_use]
182 pub fn populated(version: i16) -> Self {
183 let mut m = Self::default();
184 if version >= 0 {
185 m.cluster_id = Some("x".to_owned());
186 }
187 if version >= 0 {
188 m.current_leader_epoch = 1i32;
189 }
190 if version >= 0 {
191 m.voter_id = 1i32;
192 }
193 if version >= 0 {
194 m.voter_directory_id = Uuid([1u8; 16]);
195 }
196 if version >= 0 {
197 m.listeners = vec![Listener::populated(version)];
198 }
199 if version >= 0 {
200 m.k_raft_version_feature = KRaftVersionFeature::populated(version);
201 }
202 m
203 }
204}
205#[derive(Debug, Clone, PartialEq, Eq, Default)]
206pub struct Listener {
207 pub name: String,
208 pub host: String,
209 pub port: u16,
210 pub unknown_tagged_fields: UnknownTaggedFields,
211}
212impl Encode for Listener {
213 fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
214 let flex = version >= 0;
215 if version >= 0 {
216 if flex {
217 put_compact_string(buf, &self.name)?;
218 } else {
219 put_string(buf, &self.name)?;
220 }
221 }
222 if version >= 0 {
223 if flex {
224 put_compact_string(buf, &self.host)?;
225 } else {
226 put_string(buf, &self.host)?;
227 }
228 }
229 if version >= 0 {
230 put_u16(buf, self.port);
231 }
232 if flex {
233 let tagged = WriteTaggedFields::new();
234 tagged.write(buf, &self.unknown_tagged_fields)?;
235 }
236 Ok(())
237 }
238 fn encoded_len(&self, version: i16) -> usize {
239 let flex = version >= 0;
240 let mut n: usize = 0;
241 if version >= 0 {
242 n += if flex {
243 compact_string_len(&self.name)
244 } else {
245 string_len(&self.name)
246 };
247 }
248 if version >= 0 {
249 n += if flex {
250 compact_string_len(&self.host)
251 } else {
252 string_len(&self.host)
253 };
254 }
255 if version >= 0 {
256 n += 2;
257 }
258 if flex {
259 let known_pairs: Vec<(u32, usize)> = Vec::new();
260 n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
261 }
262 n
263 }
264}
265impl Decode<'_> for Listener {
266 fn decode<B: Buf>(buf: &mut B, version: i16) -> Result<Self, ProtocolError> {
267 let flex = version >= 0;
268 let mut out = Self::default();
269 if version >= 0 {
270 out.name = if flex {
271 get_compact_string_owned(buf)?
272 } else {
273 get_string_owned(buf)?
274 };
275 }
276 if version >= 0 {
277 out.host = if flex {
278 get_compact_string_owned(buf)?
279 } else {
280 get_string_owned(buf)?
281 };
282 }
283 if version >= 0 {
284 out.port = get_u16(buf)?;
285 }
286 if flex {
287 out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| Ok(false))?;
288 }
289 Ok(out)
290 }
291}
292#[cfg(test)]
293impl Listener {
294 #[must_use]
295 pub fn populated(version: i16) -> Self {
296 let mut m = Self::default();
297 if version >= 0 {
298 m.name = "x".to_owned();
299 }
300 if version >= 0 {
301 m.host = "x".to_owned();
302 }
303 if version >= 0 {
304 m.port = 1u16;
305 }
306 m
307 }
308}
309#[derive(Debug, Clone, PartialEq, Eq, Default)]
310pub struct KRaftVersionFeature {
311 pub min_supported_version: i16,
312 pub max_supported_version: i16,
313 pub unknown_tagged_fields: UnknownTaggedFields,
314}
315impl Encode for KRaftVersionFeature {
316 fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
317 let flex = version >= 0;
318 if version >= 0 {
319 put_i16(buf, self.min_supported_version);
320 }
321 if version >= 0 {
322 put_i16(buf, self.max_supported_version);
323 }
324 if flex {
325 let tagged = WriteTaggedFields::new();
326 tagged.write(buf, &self.unknown_tagged_fields)?;
327 }
328 Ok(())
329 }
330 fn encoded_len(&self, version: i16) -> usize {
331 let flex = version >= 0;
332 let mut n: usize = 0;
333 if version >= 0 {
334 n += 2;
335 }
336 if version >= 0 {
337 n += 2;
338 }
339 if flex {
340 let known_pairs: Vec<(u32, usize)> = Vec::new();
341 n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
342 }
343 n
344 }
345}
346impl Decode<'_> for KRaftVersionFeature {
347 fn decode<B: Buf>(buf: &mut B, version: i16) -> Result<Self, ProtocolError> {
348 let flex = version >= 0;
349 let mut out = Self::default();
350 if version >= 0 {
351 out.min_supported_version = get_i16(buf)?;
352 }
353 if version >= 0 {
354 out.max_supported_version = get_i16(buf)?;
355 }
356 if flex {
357 out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| Ok(false))?;
358 }
359 Ok(out)
360 }
361}
362#[cfg(test)]
363impl KRaftVersionFeature {
364 #[must_use]
365 pub fn populated(version: i16) -> Self {
366 let mut m = Self::default();
367 if version >= 0 {
368 m.min_supported_version = 1i16;
369 }
370 if version >= 0 {
371 m.max_supported_version = 1i16;
372 }
373 m
374 }
375}
376#[must_use]
379#[allow(unused_comparisons)]
380pub fn default_json(_version: i16) -> ::serde_json::Value {
381 let mut obj = ::serde_json::Map::new();
382 obj.insert(
383 "clusterId".to_owned(),
384 ::serde_json::Value::String(String::new()),
385 );
386 obj.insert("currentLeaderEpoch".to_owned(), ::serde_json::json!(0));
387 obj.insert("voterId".to_owned(), ::serde_json::json!(0));
388 obj.insert(
389 "voterDirectoryId".to_owned(),
390 ::serde_json::Value::String("AAAAAAAAAAAAAAAAAAAAAA".to_owned()),
391 );
392 obj.insert("listeners".to_owned(), ::serde_json::Value::Array(vec![]));
393 obj.insert("kRaftVersionFeature".to_owned(), {
394 let mut m = ::serde_json::Map::new();
395 m.insert("minSupportedVersion".to_owned(), ::serde_json::json!(0));
396 m.insert("maxSupportedVersion".to_owned(), ::serde_json::json!(0));
397 ::serde_json::Value::Object(m)
398 });
399 ::serde_json::Value::Object(obj)
400}
401impl crate::ProtocolRequest for UpdateRaftVoterRequest {
402 const API_KEY: i16 = API_KEY;
403 const MIN_VERSION: i16 = MIN_VERSION;
404 const MAX_VERSION: i16 = MAX_VERSION;
405 const LATEST_STABLE_VERSION: i16 = LATEST_STABLE_VERSION;
406 const FLEXIBLE_MIN: i16 = FLEXIBLE_MIN;
407 type Response = super::update_raft_voter_response::UpdateRaftVoterResponse;
408}