krabka_protocol/opt/rustwide/workdir/generated/
DeleteShareGroupOffsetsResponse.borrowed.rs1use bytes::BufMut;
3
4use crate::{
5 DecodeBorrow, Encode, ProtocolError, UnknownTaggedFields,
6 owned::delete_share_group_offsets_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 compact_nullable_string_len, compact_string_len, nullable_string_len,
12 put_compact_nullable_string, put_compact_string, put_nullable_string, put_string,
13 string_len,
14 },
15 string_bytes_borrowed::{
16 get_compact_nullable_string_borrowed, get_compact_string_borrowed,
17 get_nullable_string_borrowed, get_string_borrowed,
18 },
19 uuid::{Uuid, get_uuid, put_uuid},
20 },
21 tagged_fields::{WriteTaggedFields, read_tagged_fields, tagged_fields_len},
22};
23pub const API_KEY: i16 = 92;
24pub const MIN_VERSION: i16 = 0;
25pub const MAX_VERSION: i16 = 0;
26pub const FLEXIBLE_MIN: i16 = 0;
27#[inline]
28#[must_use]
29pub fn is_flexible(version: i16) -> bool {
30 version >= FLEXIBLE_MIN
31}
32#[derive(Debug, Clone, PartialEq, Eq, Default)]
33pub struct DeleteShareGroupOffsetsResponse<'a> {
34 pub throttle_time_ms: i32,
35 pub error_code: i16,
36 pub error_message: Option<&'a str>,
37 pub responses: Vec<DeleteShareGroupOffsetsResponseTopic<'a>>,
38 pub unknown_tagged_fields: UnknownTaggedFields,
39}
40impl DeleteShareGroupOffsetsResponse<'_> {
41 #[must_use]
42 pub fn to_owned(&self) -> delete_share_group_offsets_response::DeleteShareGroupOffsetsResponse {
43 delete_share_group_offsets_response::DeleteShareGroupOffsetsResponse {
44 throttle_time_ms: (self.throttle_time_ms),
45 error_code: (self.error_code),
46 error_message: (self.error_message).map(str::to_owned),
47 responses: (self.responses)
48 .iter()
49 .map(DeleteShareGroupOffsetsResponseTopic::to_owned)
50 .collect(),
51 unknown_tagged_fields: self.unknown_tagged_fields.clone(),
52 }
53 }
54}
55impl Encode for DeleteShareGroupOffsetsResponse<'_> {
56 fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
57 if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
58 return Err(ProtocolError::UnsupportedVersion {
59 api_key: API_KEY,
60 version,
61 });
62 }
63 let flex = is_flexible(version);
64 if version >= 0 {
65 put_i32(buf, self.throttle_time_ms);
66 }
67 if version >= 0 {
68 put_i16(buf, self.error_code);
69 }
70 if version >= 0 {
71 if flex {
72 put_compact_nullable_string(buf, self.error_message)?;
73 } else {
74 put_nullable_string(buf, self.error_message)?;
75 }
76 }
77 if version >= 0 {
78 {
79 put_array_len(buf, (self.responses).len(), flex)?;
80 for it in &self.responses {
81 it.encode(buf, version)?;
82 }
83 }
84 }
85 if flex {
86 let tagged = WriteTaggedFields::new();
87 tagged.write(buf, &self.unknown_tagged_fields)?;
88 }
89 Ok(())
90 }
91 fn encoded_len(&self, version: i16) -> usize {
92 let flex = is_flexible(version);
93 let mut n: usize = 0;
94 if version >= 0 {
95 n += 4;
96 }
97 if version >= 0 {
98 n += 2;
99 }
100 if version >= 0 {
101 n += if flex {
102 compact_nullable_string_len(self.error_message)
103 } else {
104 nullable_string_len(self.error_message)
105 };
106 }
107 if version >= 0 {
108 n += {
109 let prefix = array_len_prefix_len((self.responses).len(), flex);
110 let body: usize = (self.responses)
111 .iter()
112 .map(|it| it.encoded_len(version))
113 .sum();
114 prefix + body
115 };
116 }
117 if flex {
118 let known_pairs: Vec<(u32, usize)> = Vec::new();
119 n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
120 }
121 n
122 }
123}
124impl<'de> DecodeBorrow<'de> for DeleteShareGroupOffsetsResponse<'de> {
125 fn decode_borrow(buf: &mut &'de [u8], version: i16) -> Result<Self, ProtocolError> {
126 if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
127 return Err(ProtocolError::UnsupportedVersion {
128 api_key: API_KEY,
129 version,
130 });
131 }
132 let flex = is_flexible(version);
133 let mut out = Self::default();
134 if version >= 0 {
135 out.throttle_time_ms = get_i32(buf)?;
136 }
137 if version >= 0 {
138 out.error_code = get_i16(buf)?;
139 }
140 if version >= 0 {
141 out.error_message = if flex {
142 get_compact_nullable_string_borrowed(buf)?
143 } else {
144 get_nullable_string_borrowed(buf)?
145 };
146 }
147 if version >= 0 {
148 out.responses = {
149 let n = get_array_len(buf, flex)?;
150 let mut v = Vec::with_capacity(n);
151 for _ in 0..n {
152 v.push(DeleteShareGroupOffsetsResponseTopic::decode_borrow(
153 buf, version,
154 )?);
155 }
156 v
157 };
158 }
159 if flex {
160 out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| Ok(false))?;
161 }
162 Ok(out)
163 }
164}
165#[cfg(test)]
166impl DeleteShareGroupOffsetsResponse<'_> {
167 #[must_use]
168 pub fn populated(version: i16) -> Self {
169 let mut m = Self::default();
170 if version >= 0 {
171 m.throttle_time_ms = 1i32;
172 }
173 if version >= 0 {
174 m.error_code = 1i16;
175 }
176 if version >= 0 {
177 m.error_message = Some("x");
178 }
179 if version >= 0 {
180 m.responses = vec![DeleteShareGroupOffsetsResponseTopic::populated(version)];
181 }
182 m
183 }
184}
185#[derive(Debug, Clone, PartialEq, Eq, Default)]
186pub struct DeleteShareGroupOffsetsResponseTopic<'a> {
187 pub topic_name: &'a str,
188 pub topic_id: Uuid,
189 pub error_code: i16,
190 pub error_message: Option<&'a str>,
191 pub unknown_tagged_fields: UnknownTaggedFields,
192}
193impl DeleteShareGroupOffsetsResponseTopic<'_> {
194 #[must_use]
195 pub fn to_owned(
196 &self,
197 ) -> delete_share_group_offsets_response::DeleteShareGroupOffsetsResponseTopic {
198 delete_share_group_offsets_response::DeleteShareGroupOffsetsResponseTopic {
199 topic_name: (self.topic_name).to_owned(),
200 topic_id: (self.topic_id),
201 error_code: (self.error_code),
202 error_message: (self.error_message).map(str::to_owned),
203 unknown_tagged_fields: self.unknown_tagged_fields.clone(),
204 }
205 }
206}
207impl Encode for DeleteShareGroupOffsetsResponseTopic<'_> {
208 fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
209 let flex = version >= 0;
210 if version >= 0 {
211 if flex {
212 put_compact_string(buf, self.topic_name)?;
213 } else {
214 put_string(buf, self.topic_name)?;
215 }
216 }
217 if version >= 0 {
218 put_uuid(buf, self.topic_id);
219 }
220 if version >= 0 {
221 put_i16(buf, self.error_code);
222 }
223 if version >= 0 {
224 if flex {
225 put_compact_nullable_string(buf, self.error_message)?;
226 } else {
227 put_nullable_string(buf, self.error_message)?;
228 }
229 }
230 if flex {
231 let tagged = WriteTaggedFields::new();
232 tagged.write(buf, &self.unknown_tagged_fields)?;
233 }
234 Ok(())
235 }
236 fn encoded_len(&self, version: i16) -> usize {
237 let flex = version >= 0;
238 let mut n: usize = 0;
239 if version >= 0 {
240 n += if flex {
241 compact_string_len(self.topic_name)
242 } else {
243 string_len(self.topic_name)
244 };
245 }
246 if version >= 0 {
247 n += 16;
248 }
249 if version >= 0 {
250 n += 2;
251 }
252 if version >= 0 {
253 n += if flex {
254 compact_nullable_string_len(self.error_message)
255 } else {
256 nullable_string_len(self.error_message)
257 };
258 }
259 if flex {
260 let known_pairs: Vec<(u32, usize)> = Vec::new();
261 n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
262 }
263 n
264 }
265}
266impl<'de> DecodeBorrow<'de> for DeleteShareGroupOffsetsResponseTopic<'de> {
267 fn decode_borrow(buf: &mut &'de [u8], version: i16) -> Result<Self, ProtocolError> {
268 let flex = version >= 0;
269 let mut out = Self::default();
270 if version >= 0 {
271 out.topic_name = if flex {
272 get_compact_string_borrowed(buf)?
273 } else {
274 get_string_borrowed(buf)?
275 };
276 }
277 if version >= 0 {
278 out.topic_id = get_uuid(buf)?;
279 }
280 if version >= 0 {
281 out.error_code = get_i16(buf)?;
282 }
283 if version >= 0 {
284 out.error_message = if flex {
285 get_compact_nullable_string_borrowed(buf)?
286 } else {
287 get_nullable_string_borrowed(buf)?
288 };
289 }
290 if flex {
291 out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| Ok(false))?;
292 }
293 Ok(out)
294 }
295}
296#[cfg(test)]
297impl DeleteShareGroupOffsetsResponseTopic<'_> {
298 #[must_use]
299 pub fn populated(version: i16) -> Self {
300 let mut m = Self::default();
301 if version >= 0 {
302 m.topic_name = "x";
303 }
304 if version >= 0 {
305 m.topic_id = Uuid([1u8; 16]);
306 }
307 if version >= 0 {
308 m.error_code = 1i16;
309 }
310 if version >= 0 {
311 m.error_message = Some("x");
312 }
313 m
314 }
315}