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