Skip to main content

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

1// AUTO-GENERATED by krabka-protocol-codegen against a9ce3221537b8653448750697915607dc7936cf3. Do not edit.
2use bytes::{BufMut, Bytes};
3
4use crate::{
5    DecodeBorrow, Encode, ProtocolError, UnknownTaggedFields,
6    owned::describe_groups_response,
7    primitives::{
8        array::{array_len_prefix_len, get_array_len, put_array_len},
9        fixed::{get_i16, get_i32, put_i16, put_i32},
10        string_bytes::{
11            bytes_len, compact_bytes_len, compact_nullable_string_len, compact_string_len,
12            nullable_string_len, put_bytes, put_compact_bytes, put_compact_nullable_string,
13            put_compact_string, put_nullable_string, put_string, string_len,
14        },
15        string_bytes_borrowed::{
16            get_bytes_borrowed, get_compact_bytes_borrowed, get_compact_nullable_string_borrowed,
17            get_compact_string_borrowed, get_nullable_string_borrowed, get_string_borrowed,
18        },
19    },
20    tagged_fields::{WriteTaggedFields, read_tagged_fields, tagged_fields_len},
21};
22pub const API_KEY: i16 = 15;
23pub const MIN_VERSION: i16 = 0;
24pub const MAX_VERSION: i16 = 6;
25pub const FLEXIBLE_MIN: i16 = 5;
26#[inline]
27#[must_use]
28pub fn is_flexible(version: i16) -> bool {
29    version >= FLEXIBLE_MIN
30}
31#[derive(Debug, Clone, PartialEq, Eq, Default)]
32pub struct DescribeGroupsResponse<'a> {
33    pub throttle_time_ms: i32,
34    pub groups: Vec<DescribedGroup<'a>>,
35    pub unknown_tagged_fields: UnknownTaggedFields,
36}
37impl DescribeGroupsResponse<'_> {
38    #[must_use]
39    pub fn to_owned(&self) -> describe_groups_response::DescribeGroupsResponse {
40        describe_groups_response::DescribeGroupsResponse {
41            throttle_time_ms: (self.throttle_time_ms),
42            groups: (self.groups).iter().map(DescribedGroup::to_owned).collect(),
43            unknown_tagged_fields: self.unknown_tagged_fields.clone(),
44        }
45    }
46}
47impl Encode for DescribeGroupsResponse<'_> {
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 >= 1 {
57            put_i32(buf, self.throttle_time_ms);
58        }
59        if version >= 0 {
60            {
61                put_array_len(buf, (self.groups).len(), flex)?;
62                for it in &self.groups {
63                    it.encode(buf, version)?;
64                }
65            }
66        }
67        if flex {
68            let tagged = WriteTaggedFields::new();
69            tagged.write(buf, &self.unknown_tagged_fields)?;
70        }
71        Ok(())
72    }
73    fn encoded_len(&self, version: i16) -> usize {
74        let flex = is_flexible(version);
75        let mut n: usize = 0;
76        if version >= 1 {
77            n += 4;
78        }
79        if version >= 0 {
80            n += {
81                let prefix = array_len_prefix_len((self.groups).len(), flex);
82                let body: usize = (self.groups).iter().map(|it| it.encoded_len(version)).sum();
83                prefix + body
84            };
85        }
86        if flex {
87            let known_pairs: Vec<(u32, usize)> = Vec::new();
88            n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
89        }
90        n
91    }
92}
93impl<'de> DecodeBorrow<'de> for DescribeGroupsResponse<'de> {
94    fn decode_borrow(buf: &mut &'de [u8], version: i16) -> Result<Self, ProtocolError> {
95        if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
96            return Err(ProtocolError::UnsupportedVersion {
97                api_key: API_KEY,
98                version,
99            });
100        }
101        let flex = is_flexible(version);
102        let mut out = Self::default();
103        if version >= 1 {
104            out.throttle_time_ms = get_i32(buf)?;
105        }
106        if version >= 0 {
107            out.groups = {
108                let n = get_array_len(buf, flex)?;
109                let mut v = Vec::with_capacity(n);
110                for _ in 0..n {
111                    v.push(DescribedGroup::decode_borrow(buf, version)?);
112                }
113                v
114            };
115        }
116        if flex {
117            out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| Ok(false))?;
118        }
119        Ok(out)
120    }
121}
122#[cfg(test)]
123impl DescribeGroupsResponse<'_> {
124    #[must_use]
125    pub fn populated(version: i16) -> Self {
126        let mut m = Self::default();
127        if version >= 1 {
128            m.throttle_time_ms = 1i32;
129        }
130        if version >= 0 {
131            m.groups = vec![DescribedGroup::populated(version)];
132        }
133        m
134    }
135}
136#[derive(Debug, Clone, PartialEq, Eq)]
137pub struct DescribedGroup<'a> {
138    pub error_code: i16,
139    pub error_message: Option<&'a str>,
140    pub group_id: &'a str,
141    pub group_state: &'a str,
142    pub protocol_type: &'a str,
143    pub protocol_data: &'a str,
144    pub members: Vec<DescribedGroupMember<'a>>,
145    pub authorized_operations: i32,
146    pub unknown_tagged_fields: UnknownTaggedFields,
147}
148impl Default for DescribedGroup<'_> {
149    fn default() -> Self {
150        Self {
151            error_code: 0i16,
152            error_message: None,
153            group_id: "",
154            group_state: "",
155            protocol_type: "",
156            protocol_data: "",
157            members: Vec::new(),
158            authorized_operations: -2_147_483_648i32,
159            unknown_tagged_fields: UnknownTaggedFields::default(),
160        }
161    }
162}
163impl<'a> DescribedGroup<'a> {
164    #[must_use]
165    pub fn to_owned(&self) -> describe_groups_response::DescribedGroup {
166        describe_groups_response::DescribedGroup {
167            error_code: (self.error_code),
168            error_message: (self.error_message).map(str::to_owned),
169            group_id: (self.group_id).to_owned(),
170            group_state: (self.group_state).to_owned(),
171            protocol_type: (self.protocol_type).to_owned(),
172            protocol_data: (self.protocol_data).to_owned(),
173            members: (self.members)
174                .iter()
175                .map(DescribedGroupMember::to_owned)
176                .collect(),
177            authorized_operations: (self.authorized_operations),
178            unknown_tagged_fields: self.unknown_tagged_fields.clone(),
179        }
180    }
181    fn encode_field_0<B: BufMut>(&self, buf: &mut B, version: i16, _flex: bool) {
182        if version >= 0 {
183            put_i16(buf, self.error_code);
184        }
185    }
186    fn encode_field_1<B: BufMut>(
187        &self,
188        buf: &mut B,
189        version: i16,
190        flex: bool,
191    ) -> Result<(), ProtocolError> {
192        if version >= 6 {
193            if flex {
194                put_compact_nullable_string(buf, self.error_message)?;
195            } else {
196                put_nullable_string(buf, self.error_message)?;
197            }
198        }
199        Ok(())
200    }
201    fn encode_field_2<B: BufMut>(
202        &self,
203        buf: &mut B,
204        version: i16,
205        flex: bool,
206    ) -> Result<(), ProtocolError> {
207        if version >= 0 {
208            if flex {
209                put_compact_string(buf, self.group_id)?;
210            } else {
211                put_string(buf, self.group_id)?;
212            }
213        }
214        Ok(())
215    }
216    fn encode_field_3<B: BufMut>(
217        &self,
218        buf: &mut B,
219        version: i16,
220        flex: bool,
221    ) -> Result<(), ProtocolError> {
222        if version >= 0 {
223            if flex {
224                put_compact_string(buf, self.group_state)?;
225            } else {
226                put_string(buf, self.group_state)?;
227            }
228        }
229        Ok(())
230    }
231    fn encode_field_4<B: BufMut>(
232        &self,
233        buf: &mut B,
234        version: i16,
235        flex: bool,
236    ) -> Result<(), ProtocolError> {
237        if version >= 0 {
238            if flex {
239                put_compact_string(buf, self.protocol_type)?;
240            } else {
241                put_string(buf, self.protocol_type)?;
242            }
243        }
244        Ok(())
245    }
246    fn encode_field_5<B: BufMut>(
247        &self,
248        buf: &mut B,
249        version: i16,
250        flex: bool,
251    ) -> Result<(), ProtocolError> {
252        if version >= 0 {
253            if flex {
254                put_compact_string(buf, self.protocol_data)?;
255            } else {
256                put_string(buf, self.protocol_data)?;
257            }
258        }
259        Ok(())
260    }
261    fn encode_field_6<B: BufMut>(
262        &self,
263        buf: &mut B,
264        version: i16,
265        flex: bool,
266    ) -> Result<(), ProtocolError> {
267        if version >= 0 {
268            {
269                put_array_len(buf, (self.members).len(), flex)?;
270                for it in &self.members {
271                    it.encode(buf, version)?;
272                }
273            }
274        }
275        Ok(())
276    }
277    fn encode_field_7<B: BufMut>(&self, buf: &mut B, version: i16, _flex: bool) {
278        if version >= 3 {
279            put_i32(buf, self.authorized_operations);
280        }
281    }
282    fn encode_tagged_fields<B: BufMut>(
283        &self,
284        buf: &mut B,
285        _version: i16,
286        flex: bool,
287    ) -> Result<(), ProtocolError> {
288        if flex {
289            let tagged = WriteTaggedFields::new();
290            tagged.write(buf, &self.unknown_tagged_fields)?;
291        }
292        Ok(())
293    }
294    fn decode_field_0(
295        out: &mut Self,
296        buf: &mut &'a [u8],
297        version: i16,
298        _flex: bool,
299    ) -> Result<(), ProtocolError> {
300        if version >= 0 {
301            out.error_code = get_i16(buf)?;
302        }
303        Ok(())
304    }
305    fn decode_field_1(
306        out: &mut Self,
307        buf: &mut &'a [u8],
308        version: i16,
309        flex: bool,
310    ) -> Result<(), ProtocolError> {
311        if version >= 6 {
312            out.error_message = if flex {
313                get_compact_nullable_string_borrowed(buf)?
314            } else {
315                get_nullable_string_borrowed(buf)?
316            };
317        }
318        Ok(())
319    }
320    fn decode_field_2(
321        out: &mut Self,
322        buf: &mut &'a [u8],
323        version: i16,
324        flex: bool,
325    ) -> Result<(), ProtocolError> {
326        if version >= 0 {
327            out.group_id = if flex {
328                get_compact_string_borrowed(buf)?
329            } else {
330                get_string_borrowed(buf)?
331            };
332        }
333        Ok(())
334    }
335    fn decode_field_3(
336        out: &mut Self,
337        buf: &mut &'a [u8],
338        version: i16,
339        flex: bool,
340    ) -> Result<(), ProtocolError> {
341        if version >= 0 {
342            out.group_state = if flex {
343                get_compact_string_borrowed(buf)?
344            } else {
345                get_string_borrowed(buf)?
346            };
347        }
348        Ok(())
349    }
350    fn decode_field_4(
351        out: &mut Self,
352        buf: &mut &'a [u8],
353        version: i16,
354        flex: bool,
355    ) -> Result<(), ProtocolError> {
356        if version >= 0 {
357            out.protocol_type = if flex {
358                get_compact_string_borrowed(buf)?
359            } else {
360                get_string_borrowed(buf)?
361            };
362        }
363        Ok(())
364    }
365    fn decode_field_5(
366        out: &mut Self,
367        buf: &mut &'a [u8],
368        version: i16,
369        flex: bool,
370    ) -> Result<(), ProtocolError> {
371        if version >= 0 {
372            out.protocol_data = if flex {
373                get_compact_string_borrowed(buf)?
374            } else {
375                get_string_borrowed(buf)?
376            };
377        }
378        Ok(())
379    }
380    fn decode_field_6(
381        out: &mut Self,
382        buf: &mut &'a [u8],
383        version: i16,
384        flex: bool,
385    ) -> Result<(), ProtocolError> {
386        if version >= 0 {
387            out.members = {
388                let n = get_array_len(buf, flex)?;
389                let mut v = Vec::with_capacity(n);
390                for _ in 0..n {
391                    v.push(DescribedGroupMember::decode_borrow(buf, version)?);
392                }
393                v
394            };
395        }
396        Ok(())
397    }
398    fn decode_field_7(
399        out: &mut Self,
400        buf: &mut &'a [u8],
401        version: i16,
402        _flex: bool,
403    ) -> Result<(), ProtocolError> {
404        if version >= 3 {
405            out.authorized_operations = get_i32(buf)?;
406        }
407        Ok(())
408    }
409    fn decode_tagged_fields(
410        out: &mut Self,
411        buf: &mut &'a [u8],
412        _version: i16,
413        flex: bool,
414    ) -> Result<(), ProtocolError> {
415        if flex {
416            out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| Ok(false))?;
417        }
418        Ok(())
419    }
420}
421impl Encode for DescribedGroup<'_> {
422    fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
423        let flex = version >= 5;
424        self.encode_field_0(buf, version, flex);
425        self.encode_field_1(buf, version, flex)?;
426        self.encode_field_2(buf, version, flex)?;
427        self.encode_field_3(buf, version, flex)?;
428        self.encode_field_4(buf, version, flex)?;
429        self.encode_field_5(buf, version, flex)?;
430        self.encode_field_6(buf, version, flex)?;
431        self.encode_field_7(buf, version, flex);
432        self.encode_tagged_fields(buf, version, flex)?;
433        Ok(())
434    }
435    fn encoded_len(&self, version: i16) -> usize {
436        let flex = version >= 5;
437        let mut n: usize = 0;
438        if version >= 0 {
439            n += 2;
440        }
441        if version >= 6 {
442            n += if flex {
443                compact_nullable_string_len(self.error_message)
444            } else {
445                nullable_string_len(self.error_message)
446            };
447        }
448        if version >= 0 {
449            n += if flex {
450                compact_string_len(self.group_id)
451            } else {
452                string_len(self.group_id)
453            };
454        }
455        if version >= 0 {
456            n += if flex {
457                compact_string_len(self.group_state)
458            } else {
459                string_len(self.group_state)
460            };
461        }
462        if version >= 0 {
463            n += if flex {
464                compact_string_len(self.protocol_type)
465            } else {
466                string_len(self.protocol_type)
467            };
468        }
469        if version >= 0 {
470            n += if flex {
471                compact_string_len(self.protocol_data)
472            } else {
473                string_len(self.protocol_data)
474            };
475        }
476        if version >= 0 {
477            n += {
478                let prefix = array_len_prefix_len((self.members).len(), flex);
479                let body: usize = (self.members)
480                    .iter()
481                    .map(|it| it.encoded_len(version))
482                    .sum();
483                prefix + body
484            };
485        }
486        if version >= 3 {
487            n += 4;
488        }
489        if flex {
490            let known_pairs: Vec<(u32, usize)> = Vec::new();
491            n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
492        }
493        n
494    }
495}
496impl<'de> DecodeBorrow<'de> for DescribedGroup<'de> {
497    fn decode_borrow(buf: &mut &'de [u8], version: i16) -> Result<Self, ProtocolError> {
498        let flex = version >= 5;
499        let mut out = Self::default();
500        Self::decode_field_0(&mut out, buf, version, flex)?;
501        Self::decode_field_1(&mut out, buf, version, flex)?;
502        Self::decode_field_2(&mut out, buf, version, flex)?;
503        Self::decode_field_3(&mut out, buf, version, flex)?;
504        Self::decode_field_4(&mut out, buf, version, flex)?;
505        Self::decode_field_5(&mut out, buf, version, flex)?;
506        Self::decode_field_6(&mut out, buf, version, flex)?;
507        Self::decode_field_7(&mut out, buf, version, flex)?;
508        Self::decode_tagged_fields(&mut out, buf, version, flex)?;
509        Ok(out)
510    }
511}
512#[cfg(test)]
513impl DescribedGroup<'_> {
514    #[must_use]
515    pub fn populated(version: i16) -> Self {
516        let mut m = Self::default();
517        if version >= 0 {
518            m.error_code = 1i16;
519        }
520        if version >= 6 {
521            m.error_message = Some("x");
522        }
523        if version >= 0 {
524            m.group_id = "x";
525        }
526        if version >= 0 {
527            m.group_state = "x";
528        }
529        if version >= 0 {
530            m.protocol_type = "x";
531        }
532        if version >= 0 {
533            m.protocol_data = "x";
534        }
535        if version >= 0 {
536            m.members = vec![DescribedGroupMember::populated(version)];
537        }
538        if version >= 3 {
539            m.authorized_operations = 1i32;
540        }
541        m
542    }
543}
544#[derive(Debug, Clone, PartialEq, Eq, Default)]
545pub struct DescribedGroupMember<'a> {
546    pub member_id: &'a str,
547    pub group_instance_id: Option<&'a str>,
548    pub client_id: &'a str,
549    pub client_host: &'a str,
550    pub member_metadata: &'a [u8],
551    pub member_assignment: &'a [u8],
552    pub unknown_tagged_fields: UnknownTaggedFields,
553}
554impl DescribedGroupMember<'_> {
555    #[must_use]
556    pub fn to_owned(&self) -> describe_groups_response::DescribedGroupMember {
557        describe_groups_response::DescribedGroupMember {
558            member_id: (self.member_id).to_owned(),
559            group_instance_id: (self.group_instance_id).map(str::to_owned),
560            client_id: (self.client_id).to_owned(),
561            client_host: (self.client_host).to_owned(),
562            member_metadata: Bytes::copy_from_slice(self.member_metadata),
563            member_assignment: Bytes::copy_from_slice(self.member_assignment),
564            unknown_tagged_fields: self.unknown_tagged_fields.clone(),
565        }
566    }
567}
568impl Encode for DescribedGroupMember<'_> {
569    fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
570        let flex = version >= 5;
571        if version >= 0 {
572            if flex {
573                put_compact_string(buf, self.member_id)?;
574            } else {
575                put_string(buf, self.member_id)?;
576            }
577        }
578        if version >= 4 {
579            if flex {
580                put_compact_nullable_string(buf, self.group_instance_id)?;
581            } else {
582                put_nullable_string(buf, self.group_instance_id)?;
583            }
584        }
585        if version >= 0 {
586            if flex {
587                put_compact_string(buf, self.client_id)?;
588            } else {
589                put_string(buf, self.client_id)?;
590            }
591        }
592        if version >= 0 {
593            if flex {
594                put_compact_string(buf, self.client_host)?;
595            } else {
596                put_string(buf, self.client_host)?;
597            }
598        }
599        if version >= 0 {
600            if flex {
601                put_compact_bytes(buf, self.member_metadata)?;
602            } else {
603                put_bytes(buf, self.member_metadata)?;
604            }
605        }
606        if version >= 0 {
607            if flex {
608                put_compact_bytes(buf, self.member_assignment)?;
609            } else {
610                put_bytes(buf, self.member_assignment)?;
611            }
612        }
613        if flex {
614            let tagged = WriteTaggedFields::new();
615            tagged.write(buf, &self.unknown_tagged_fields)?;
616        }
617        Ok(())
618    }
619    fn encoded_len(&self, version: i16) -> usize {
620        let flex = version >= 5;
621        let mut n: usize = 0;
622        if version >= 0 {
623            n += if flex {
624                compact_string_len(self.member_id)
625            } else {
626                string_len(self.member_id)
627            };
628        }
629        if version >= 4 {
630            n += if flex {
631                compact_nullable_string_len(self.group_instance_id)
632            } else {
633                nullable_string_len(self.group_instance_id)
634            };
635        }
636        if version >= 0 {
637            n += if flex {
638                compact_string_len(self.client_id)
639            } else {
640                string_len(self.client_id)
641            };
642        }
643        if version >= 0 {
644            n += if flex {
645                compact_string_len(self.client_host)
646            } else {
647                string_len(self.client_host)
648            };
649        }
650        if version >= 0 {
651            n += if flex {
652                compact_bytes_len(self.member_metadata)
653            } else {
654                bytes_len(self.member_metadata)
655            };
656        }
657        if version >= 0 {
658            n += if flex {
659                compact_bytes_len(self.member_assignment)
660            } else {
661                bytes_len(self.member_assignment)
662            };
663        }
664        if flex {
665            let known_pairs: Vec<(u32, usize)> = Vec::new();
666            n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
667        }
668        n
669    }
670}
671impl<'de> DecodeBorrow<'de> for DescribedGroupMember<'de> {
672    fn decode_borrow(buf: &mut &'de [u8], version: i16) -> Result<Self, ProtocolError> {
673        let flex = version >= 5;
674        let mut out = Self::default();
675        if version >= 0 {
676            out.member_id = if flex {
677                get_compact_string_borrowed(buf)?
678            } else {
679                get_string_borrowed(buf)?
680            };
681        }
682        if version >= 4 {
683            out.group_instance_id = if flex {
684                get_compact_nullable_string_borrowed(buf)?
685            } else {
686                get_nullable_string_borrowed(buf)?
687            };
688        }
689        if version >= 0 {
690            out.client_id = if flex {
691                get_compact_string_borrowed(buf)?
692            } else {
693                get_string_borrowed(buf)?
694            };
695        }
696        if version >= 0 {
697            out.client_host = if flex {
698                get_compact_string_borrowed(buf)?
699            } else {
700                get_string_borrowed(buf)?
701            };
702        }
703        if version >= 0 {
704            out.member_metadata = if flex {
705                get_compact_bytes_borrowed(buf)?
706            } else {
707                get_bytes_borrowed(buf)?
708            };
709        }
710        if version >= 0 {
711            out.member_assignment = if flex {
712                get_compact_bytes_borrowed(buf)?
713            } else {
714                get_bytes_borrowed(buf)?
715            };
716        }
717        if flex {
718            out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| Ok(false))?;
719        }
720        Ok(out)
721    }
722}
723#[cfg(test)]
724impl DescribedGroupMember<'_> {
725    #[must_use]
726    pub fn populated(version: i16) -> Self {
727        let mut m = Self::default();
728        if version >= 0 {
729            m.member_id = "x";
730        }
731        if version >= 4 {
732            m.group_instance_id = Some("x");
733        }
734        if version >= 0 {
735            m.client_id = "x";
736        }
737        if version >= 0 {
738            m.client_host = "x";
739        }
740        if version >= 0 {
741            m.member_metadata = &b"x"[..];
742        }
743        if version >= 0 {
744            m.member_assignment = &b"x"[..];
745        }
746        m
747    }
748}