krabka_protocol/opt/rustwide/workdir/generated/
CreateAclsRequest.borrowed.rs1use 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}