Skip to main content

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

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