crabka_protocol/opt/rustwide/workdir/generated/
ReadShareGroupStateResponse.borrowed.rs1use crate::primitives::fixed::{
3 get_i8, get_i16, get_i32, get_i64, put_i8, put_i16, put_i32, put_i64,
4};
5use crate::primitives::string_bytes::{
6 compact_nullable_string_len, nullable_string_len, put_compact_nullable_string,
7 put_nullable_string,
8};
9use crate::primitives::string_bytes_borrowed::{
10 get_compact_nullable_string_borrowed, get_nullable_string_borrowed,
11};
12use crate::tagged_fields::{WriteTaggedFields, read_tagged_fields, tagged_fields_len};
13use crate::{DecodeBorrow, Encode, ProtocolError, UnknownTaggedFields};
14use bytes::BufMut;
15pub const API_KEY: i16 = 84;
16pub const MIN_VERSION: i16 = 0;
17pub const MAX_VERSION: i16 = 0;
18pub const FLEXIBLE_MIN: i16 = 0;
19#[inline]
20fn is_flexible(version: i16) -> bool {
21 version >= FLEXIBLE_MIN
22}
23#[derive(Debug, Clone, PartialEq, Eq, Default)]
24pub struct ReadShareGroupStateResponse<'a> {
25 pub results: Vec<ReadStateResult<'a>>,
26 pub unknown_tagged_fields: UnknownTaggedFields,
27}
28impl ReadShareGroupStateResponse<'_> {
29 pub fn to_owned(
30 &self,
31 ) -> crate::owned::read_share_group_state_response::ReadShareGroupStateResponse {
32 crate::owned::read_share_group_state_response::ReadShareGroupStateResponse {
33 results: (self.results)
34 .iter()
35 .map(ReadStateResult::to_owned)
36 .collect(),
37 unknown_tagged_fields: self.unknown_tagged_fields.clone(),
38 }
39 }
40}
41impl Encode for ReadShareGroupStateResponse<'_> {
42 fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
43 if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
44 return Err(ProtocolError::UnsupportedVersion {
45 api_key: API_KEY,
46 version,
47 });
48 }
49 let flex = is_flexible(version);
50 if version >= 0 {
51 {
52 crate::primitives::array::put_array_len(buf, (self.results).len(), flex);
53 for it in &self.results {
54 it.encode(buf, version)?;
55 }
56 }
57 }
58 if flex {
59 let tagged = WriteTaggedFields::new();
60 tagged.write(buf, &self.unknown_tagged_fields);
61 }
62 Ok(())
63 }
64 fn encoded_len(&self, version: i16) -> usize {
65 let flex = is_flexible(version);
66 let mut n: usize = 0;
67 if version >= 0 {
68 n += {
69 let prefix =
70 crate::primitives::array::array_len_prefix_len((self.results).len(), flex);
71 let body: usize = (self.results)
72 .iter()
73 .map(|it| it.encoded_len(version))
74 .sum();
75 prefix + body
76 };
77 }
78 if flex {
79 let known_pairs: Vec<(u32, usize)> = Vec::new();
80 n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
81 }
82 n
83 }
84}
85impl<'de> DecodeBorrow<'de> for ReadShareGroupStateResponse<'de> {
86 fn decode_borrow(buf: &mut &'de [u8], version: i16) -> Result<Self, ProtocolError> {
87 if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
88 return Err(ProtocolError::UnsupportedVersion {
89 api_key: API_KEY,
90 version,
91 });
92 }
93 let flex = is_flexible(version);
94 let mut out = Self::default();
95 if version >= 0 {
96 out.results = {
97 let n = crate::primitives::array::get_array_len(buf, flex)?;
98 let mut v = Vec::with_capacity(n);
99 for _ in 0..n {
100 v.push(ReadStateResult::decode_borrow(buf, version)?);
101 }
102 v
103 };
104 }
105 if flex {
106 out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| Ok(false))?;
107 }
108 Ok(out)
109 }
110}
111#[cfg(test)]
112impl ReadShareGroupStateResponse<'_> {
113 #[must_use]
114 pub fn populated(version: i16) -> Self {
115 let mut m = Self::default();
116 if version >= 0 {
117 m.results = vec![ReadStateResult::populated(version)];
118 }
119 m
120 }
121}
122#[derive(Debug, Clone, PartialEq, Eq, Default)]
123pub struct ReadStateResult<'a> {
124 pub topic_id: crate::primitives::uuid::Uuid,
125 pub partitions: Vec<PartitionResult<'a>>,
126 pub unknown_tagged_fields: UnknownTaggedFields,
127}
128impl ReadStateResult<'_> {
129 pub fn to_owned(&self) -> crate::owned::read_share_group_state_response::ReadStateResult {
130 crate::owned::read_share_group_state_response::ReadStateResult {
131 topic_id: (self.topic_id),
132 partitions: (self.partitions)
133 .iter()
134 .map(PartitionResult::to_owned)
135 .collect(),
136 unknown_tagged_fields: self.unknown_tagged_fields.clone(),
137 }
138 }
139}
140impl Encode for ReadStateResult<'_> {
141 fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
142 let flex = version >= 0;
143 if version >= 0 {
144 crate::primitives::uuid::put_uuid(buf, self.topic_id);
145 }
146 if version >= 0 {
147 {
148 crate::primitives::array::put_array_len(buf, (self.partitions).len(), flex);
149 for it in &self.partitions {
150 it.encode(buf, version)?;
151 }
152 }
153 }
154 if flex {
155 let tagged = WriteTaggedFields::new();
156 tagged.write(buf, &self.unknown_tagged_fields);
157 }
158 Ok(())
159 }
160 fn encoded_len(&self, version: i16) -> usize {
161 let flex = version >= 0;
162 let mut n: usize = 0;
163 if version >= 0 {
164 n += 16;
165 }
166 if version >= 0 {
167 n += {
168 let prefix =
169 crate::primitives::array::array_len_prefix_len((self.partitions).len(), flex);
170 let body: usize = (self.partitions)
171 .iter()
172 .map(|it| it.encoded_len(version))
173 .sum();
174 prefix + body
175 };
176 }
177 if flex {
178 let known_pairs: Vec<(u32, usize)> = Vec::new();
179 n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
180 }
181 n
182 }
183}
184impl<'de> DecodeBorrow<'de> for ReadStateResult<'de> {
185 fn decode_borrow(buf: &mut &'de [u8], version: i16) -> Result<Self, ProtocolError> {
186 let flex = version >= 0;
187 let mut out = Self::default();
188 if version >= 0 {
189 out.topic_id = crate::primitives::uuid::get_uuid(buf)?;
190 }
191 if version >= 0 {
192 out.partitions = {
193 let n = crate::primitives::array::get_array_len(buf, flex)?;
194 let mut v = Vec::with_capacity(n);
195 for _ in 0..n {
196 v.push(PartitionResult::decode_borrow(buf, version)?);
197 }
198 v
199 };
200 }
201 if flex {
202 out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| Ok(false))?;
203 }
204 Ok(out)
205 }
206}
207#[cfg(test)]
208impl ReadStateResult<'_> {
209 #[must_use]
210 pub fn populated(version: i16) -> Self {
211 let mut m = Self::default();
212 if version >= 0 {
213 m.topic_id = crate::primitives::uuid::Uuid([1u8; 16]);
214 }
215 if version >= 0 {
216 m.partitions = vec![PartitionResult::populated(version)];
217 }
218 m
219 }
220}
221#[derive(Debug, Clone, PartialEq, Eq, Default)]
222pub struct PartitionResult<'a> {
223 pub partition: i32,
224 pub error_code: i16,
225 pub error_message: Option<&'a str>,
226 pub state_epoch: i32,
227 pub start_offset: i64,
228 pub state_batches: Vec<StateBatch>,
229 pub unknown_tagged_fields: UnknownTaggedFields,
230}
231impl PartitionResult<'_> {
232 pub fn to_owned(&self) -> crate::owned::read_share_group_state_response::PartitionResult {
233 crate::owned::read_share_group_state_response::PartitionResult {
234 partition: (self.partition),
235 error_code: (self.error_code),
236 error_message: (self.error_message).map(std::string::ToString::to_string),
237 state_epoch: (self.state_epoch),
238 start_offset: (self.start_offset),
239 state_batches: (self.state_batches)
240 .iter()
241 .map(StateBatch::to_owned)
242 .collect(),
243 unknown_tagged_fields: self.unknown_tagged_fields.clone(),
244 }
245 }
246}
247impl Encode for PartitionResult<'_> {
248 fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
249 let flex = version >= 0;
250 if version >= 0 {
251 put_i32(buf, self.partition);
252 }
253 if version >= 0 {
254 put_i16(buf, self.error_code);
255 }
256 if version >= 0 {
257 if flex {
258 put_compact_nullable_string(buf, self.error_message);
259 } else {
260 put_nullable_string(buf, self.error_message);
261 }
262 }
263 if version >= 0 {
264 put_i32(buf, self.state_epoch);
265 }
266 if version >= 0 {
267 put_i64(buf, self.start_offset);
268 }
269 if version >= 0 {
270 {
271 crate::primitives::array::put_array_len(buf, (self.state_batches).len(), flex);
272 for it in &self.state_batches {
273 it.encode(buf, version)?;
274 }
275 }
276 }
277 if flex {
278 let tagged = WriteTaggedFields::new();
279 tagged.write(buf, &self.unknown_tagged_fields);
280 }
281 Ok(())
282 }
283 fn encoded_len(&self, version: i16) -> usize {
284 let flex = version >= 0;
285 let mut n: usize = 0;
286 if version >= 0 {
287 n += 4;
288 }
289 if version >= 0 {
290 n += 2;
291 }
292 if version >= 0 {
293 n += if flex {
294 compact_nullable_string_len(self.error_message)
295 } else {
296 nullable_string_len(self.error_message)
297 };
298 }
299 if version >= 0 {
300 n += 4;
301 }
302 if version >= 0 {
303 n += 8;
304 }
305 if version >= 0 {
306 n += {
307 let prefix = crate::primitives::array::array_len_prefix_len(
308 (self.state_batches).len(),
309 flex,
310 );
311 let body: usize = (self.state_batches)
312 .iter()
313 .map(|it| it.encoded_len(version))
314 .sum();
315 prefix + body
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 PartitionResult<'de> {
326 fn decode_borrow(buf: &mut &'de [u8], version: i16) -> Result<Self, ProtocolError> {
327 let flex = version >= 0;
328 let mut out = Self::default();
329 if version >= 0 {
330 out.partition = get_i32(buf)?;
331 }
332 if version >= 0 {
333 out.error_code = get_i16(buf)?;
334 }
335 if version >= 0 {
336 out.error_message = if flex {
337 get_compact_nullable_string_borrowed(buf)?
338 } else {
339 get_nullable_string_borrowed(buf)?
340 };
341 }
342 if version >= 0 {
343 out.state_epoch = get_i32(buf)?;
344 }
345 if version >= 0 {
346 out.start_offset = get_i64(buf)?;
347 }
348 if version >= 0 {
349 out.state_batches = {
350 let n = crate::primitives::array::get_array_len(buf, flex)?;
351 let mut v = Vec::with_capacity(n);
352 for _ in 0..n {
353 v.push(StateBatch::decode_borrow(buf, version)?);
354 }
355 v
356 };
357 }
358 if flex {
359 out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| Ok(false))?;
360 }
361 Ok(out)
362 }
363}
364#[cfg(test)]
365impl PartitionResult<'_> {
366 #[must_use]
367 pub fn populated(version: i16) -> Self {
368 let mut m = Self::default();
369 if version >= 0 {
370 m.partition = 1i32;
371 }
372 if version >= 0 {
373 m.error_code = 1i16;
374 }
375 if version >= 0 {
376 m.error_message = Some("x");
377 }
378 if version >= 0 {
379 m.state_epoch = 1i32;
380 }
381 if version >= 0 {
382 m.start_offset = 1i64;
383 }
384 if version >= 0 {
385 m.state_batches = vec![StateBatch::populated(version)];
386 }
387 m
388 }
389}
390#[derive(Debug, Clone, PartialEq, Eq, Default)]
391pub struct StateBatch {
392 pub first_offset: i64,
393 pub last_offset: i64,
394 pub delivery_state: i8,
395 pub delivery_count: i16,
396 pub unknown_tagged_fields: UnknownTaggedFields,
397}
398impl StateBatch {
399 pub fn to_owned(&self) -> crate::owned::read_share_group_state_response::StateBatch {
400 crate::owned::read_share_group_state_response::StateBatch {
401 first_offset: (self.first_offset),
402 last_offset: (self.last_offset),
403 delivery_state: (self.delivery_state),
404 delivery_count: (self.delivery_count),
405 unknown_tagged_fields: self.unknown_tagged_fields.clone(),
406 }
407 }
408}
409impl Encode for StateBatch {
410 fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
411 let flex = version >= 0;
412 if version >= 0 {
413 put_i64(buf, self.first_offset);
414 }
415 if version >= 0 {
416 put_i64(buf, self.last_offset);
417 }
418 if version >= 0 {
419 put_i8(buf, self.delivery_state);
420 }
421 if version >= 0 {
422 put_i16(buf, self.delivery_count);
423 }
424 if flex {
425 let tagged = WriteTaggedFields::new();
426 tagged.write(buf, &self.unknown_tagged_fields);
427 }
428 Ok(())
429 }
430 fn encoded_len(&self, version: i16) -> usize {
431 let flex = version >= 0;
432 let mut n: usize = 0;
433 if version >= 0 {
434 n += 8;
435 }
436 if version >= 0 {
437 n += 8;
438 }
439 if version >= 0 {
440 n += 1;
441 }
442 if version >= 0 {
443 n += 2;
444 }
445 if flex {
446 let known_pairs: Vec<(u32, usize)> = Vec::new();
447 n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
448 }
449 n
450 }
451}
452impl<'de> DecodeBorrow<'de> for StateBatch {
453 fn decode_borrow(buf: &mut &'de [u8], version: i16) -> Result<Self, ProtocolError> {
454 let flex = version >= 0;
455 let mut out = Self::default();
456 if version >= 0 {
457 out.first_offset = get_i64(buf)?;
458 }
459 if version >= 0 {
460 out.last_offset = get_i64(buf)?;
461 }
462 if version >= 0 {
463 out.delivery_state = get_i8(buf)?;
464 }
465 if version >= 0 {
466 out.delivery_count = get_i16(buf)?;
467 }
468 if flex {
469 out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| Ok(false))?;
470 }
471 Ok(out)
472 }
473}
474#[cfg(test)]
475impl StateBatch {
476 #[must_use]
477 pub fn populated(version: i16) -> Self {
478 let mut m = Self::default();
479 if version >= 0 {
480 m.first_offset = 1i64;
481 }
482 if version >= 0 {
483 m.last_offset = 1i64;
484 }
485 if version >= 0 {
486 m.delivery_state = 1i8;
487 }
488 if version >= 0 {
489 m.delivery_count = 1i16;
490 }
491 m
492 }
493}