Skip to main content

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

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