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