Skip to main content

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

1// AUTO-GENERATED by crabka-protocol-codegen against a9ce3221537b8653448750697915607dc7936cf3. Do not edit.
2use crate::primitives::string_bytes::{
3    compact_string_len, put_compact_string, put_string, string_len,
4};
5use crate::primitives::string_bytes_borrowed::{get_compact_string_borrowed, get_string_borrowed};
6use crate::tagged_fields::{WriteTaggedFields, read_tagged_fields, tagged_fields_len};
7use crate::{DecodeBorrow, Encode, ProtocolError, UnknownTaggedFields};
8use bytes::BufMut;
9pub const API_KEY: i16 = 50;
10pub const MIN_VERSION: i16 = 0;
11pub const MAX_VERSION: i16 = 0;
12pub const FLEXIBLE_MIN: i16 = 0;
13#[inline]
14fn is_flexible(version: i16) -> bool {
15    version >= FLEXIBLE_MIN
16}
17#[derive(Debug, Clone, PartialEq, Eq, Default)]
18pub struct DescribeUserScramCredentialsRequest<'a> {
19    pub users: Option<Vec<UserName<'a>>>,
20    pub unknown_tagged_fields: UnknownTaggedFields,
21}
22impl DescribeUserScramCredentialsRequest<'_> {
23    pub fn to_owned(
24        &self,
25    ) -> crate::owned::describe_user_scram_credentials_request::DescribeUserScramCredentialsRequest
26    {
27        crate::owned::describe_user_scram_credentials_request::DescribeUserScramCredentialsRequest {
28            users: (self.users)
29                .as_ref()
30                .map(|v| v.iter().map(UserName::to_owned).collect()),
31            unknown_tagged_fields: self.unknown_tagged_fields.clone(),
32        }
33    }
34}
35impl Encode for DescribeUserScramCredentialsRequest<'_> {
36    fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
37        if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
38            return Err(ProtocolError::UnsupportedVersion {
39                api_key: API_KEY,
40                version,
41            });
42        }
43        let flex = is_flexible(version);
44        if version >= 0 {
45            {
46                let len = (self.users).as_ref().map(Vec::len);
47                crate::primitives::array::put_nullable_array_len(buf, len, flex);
48                if let Some(v) = &self.users {
49                    for it in v {
50                        it.encode(buf, version)?;
51                    }
52                }
53            }
54        }
55        if flex {
56            let tagged = WriteTaggedFields::new();
57            tagged.write(buf, &self.unknown_tagged_fields);
58        }
59        Ok(())
60    }
61    fn encoded_len(&self, version: i16) -> usize {
62        let flex = is_flexible(version);
63        let mut n: usize = 0;
64        if version >= 0 {
65            n += {
66                let opt: Option<&Vec<_>> = (self.users).as_ref();
67                let prefix = crate::primitives::array::nullable_array_len_prefix_len(
68                    opt.map(std::vec::Vec::len),
69                    flex,
70                );
71                let body: usize =
72                    opt.map_or(0, |v| v.iter().map(|it| it.encoded_len(version)).sum());
73                prefix + body
74            };
75        }
76        if flex {
77            let known_pairs: Vec<(u32, usize)> = Vec::new();
78            n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
79        }
80        n
81    }
82}
83impl<'de> DecodeBorrow<'de> for DescribeUserScramCredentialsRequest<'de> {
84    fn decode_borrow(buf: &mut &'de [u8], version: i16) -> Result<Self, ProtocolError> {
85        if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
86            return Err(ProtocolError::UnsupportedVersion {
87                api_key: API_KEY,
88                version,
89            });
90        }
91        let flex = is_flexible(version);
92        let mut out = Self::default();
93        if version >= 0 {
94            out.users = {
95                let opt = crate::primitives::array::get_nullable_array_len(buf, flex)?;
96                match opt {
97                    None => None,
98                    Some(n) => {
99                        let mut v = Vec::with_capacity(n);
100                        for _ in 0..n {
101                            v.push(UserName::decode_borrow(buf, version)?);
102                        }
103                        Some(v)
104                    }
105                }
106            };
107        }
108        if flex {
109            out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| Ok(false))?;
110        }
111        Ok(out)
112    }
113}
114#[cfg(test)]
115impl DescribeUserScramCredentialsRequest<'_> {
116    #[must_use]
117    pub fn populated(version: i16) -> Self {
118        let mut m = Self::default();
119        if version >= 0 {
120            m.users = Some(vec![UserName::populated(version)]);
121        }
122        m
123    }
124}
125#[derive(Debug, Clone, PartialEq, Eq, Default)]
126pub struct UserName<'a> {
127    pub name: &'a str,
128    pub unknown_tagged_fields: UnknownTaggedFields,
129}
130impl UserName<'_> {
131    pub fn to_owned(&self) -> crate::owned::describe_user_scram_credentials_request::UserName {
132        crate::owned::describe_user_scram_credentials_request::UserName {
133            name: (self.name).to_string(),
134            unknown_tagged_fields: self.unknown_tagged_fields.clone(),
135        }
136    }
137}
138impl Encode for UserName<'_> {
139    fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
140        let flex = version >= 0;
141        if version >= 0 {
142            if flex {
143                put_compact_string(buf, self.name);
144            } else {
145                put_string(buf, self.name);
146            }
147        }
148        if flex {
149            let tagged = WriteTaggedFields::new();
150            tagged.write(buf, &self.unknown_tagged_fields);
151        }
152        Ok(())
153    }
154    fn encoded_len(&self, version: i16) -> usize {
155        let flex = version >= 0;
156        let mut n: usize = 0;
157        if version >= 0 {
158            n += if flex {
159                compact_string_len(self.name)
160            } else {
161                string_len(self.name)
162            };
163        }
164        if flex {
165            let known_pairs: Vec<(u32, usize)> = Vec::new();
166            n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
167        }
168        n
169    }
170}
171impl<'de> DecodeBorrow<'de> for UserName<'de> {
172    fn decode_borrow(buf: &mut &'de [u8], version: i16) -> Result<Self, ProtocolError> {
173        let flex = version >= 0;
174        let mut out = Self::default();
175        if version >= 0 {
176            out.name = if flex {
177                get_compact_string_borrowed(buf)?
178            } else {
179                get_string_borrowed(buf)?
180            };
181        }
182        if flex {
183            out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| Ok(false))?;
184        }
185        Ok(out)
186    }
187}
188#[cfg(test)]
189impl UserName<'_> {
190    #[must_use]
191    pub fn populated(version: i16) -> Self {
192        let mut m = Self::default();
193        if version >= 0 {
194            m.name = "x";
195        }
196        m
197    }
198}