Skip to main content

crabka_protocol/opt/rustwide/workdir/generated/
UpdateRaftVoterRequest.borrowed.rs

1// AUTO-GENERATED by crabka-protocol-codegen against a9ce3221537b8653448750697915607dc7936cf3. Do not edit.
2use 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}