Skip to main content

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

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