Skip to main content

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

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