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