Skip to main content

krabka_protocol/opt/rustwide/workdir/generated/
UpdateRaftVoterResponse.borrowed.rs

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