krabka_protocol/opt/rustwide/workdir/generated/
ListConfigResourcesResponse.borrowed.rs1use bytes::BufMut;
3
4use crate::{
5 DecodeBorrow, Encode, ProtocolError, UnknownTaggedFields,
6 owned::list_config_resources_response,
7 primitives::{
8 array::{array_len_prefix_len, get_array_len, put_array_len},
9 fixed::{get_i8, get_i16, get_i32, put_i8, put_i16, put_i32},
10 string_bytes::{compact_string_len, put_compact_string, put_string, string_len},
11 string_bytes_borrowed::{get_compact_string_borrowed, get_string_borrowed},
12 },
13 tagged_fields::{WriteTaggedFields, read_tagged_fields, tagged_fields_len},
14};
15pub const API_KEY: i16 = 74;
16pub const MIN_VERSION: i16 = 0;
17pub const MAX_VERSION: i16 = 1;
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, Default)]
25pub struct ListConfigResourcesResponse<'a> {
26 pub throttle_time_ms: i32,
27 pub error_code: i16,
28 pub config_resources: Vec<ConfigResource<'a>>,
29 pub unknown_tagged_fields: UnknownTaggedFields,
30}
31impl ListConfigResourcesResponse<'_> {
32 #[must_use]
33 pub fn to_owned(&self) -> list_config_resources_response::ListConfigResourcesResponse {
34 list_config_resources_response::ListConfigResourcesResponse {
35 throttle_time_ms: (self.throttle_time_ms),
36 error_code: (self.error_code),
37 config_resources: (self.config_resources)
38 .iter()
39 .map(ConfigResource::to_owned)
40 .collect(),
41 unknown_tagged_fields: self.unknown_tagged_fields.clone(),
42 }
43 }
44}
45impl Encode for ListConfigResourcesResponse<'_> {
46 fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
47 if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
48 return Err(ProtocolError::UnsupportedVersion {
49 api_key: API_KEY,
50 version,
51 });
52 }
53 let flex = is_flexible(version);
54 if version >= 0 {
55 put_i32(buf, self.throttle_time_ms);
56 }
57 if version >= 0 {
58 put_i16(buf, self.error_code);
59 }
60 if version >= 0 {
61 {
62 put_array_len(buf, (self.config_resources).len(), flex)?;
63 for it in &self.config_resources {
64 it.encode(buf, version)?;
65 }
66 }
67 }
68 if flex {
69 let tagged = WriteTaggedFields::new();
70 tagged.write(buf, &self.unknown_tagged_fields)?;
71 }
72 Ok(())
73 }
74 fn encoded_len(&self, version: i16) -> usize {
75 let flex = is_flexible(version);
76 let mut n: usize = 0;
77 if version >= 0 {
78 n += 4;
79 }
80 if version >= 0 {
81 n += 2;
82 }
83 if version >= 0 {
84 n += {
85 let prefix = array_len_prefix_len((self.config_resources).len(), flex);
86 let body: usize = (self.config_resources)
87 .iter()
88 .map(|it| it.encoded_len(version))
89 .sum();
90 prefix + body
91 };
92 }
93 if flex {
94 let known_pairs: Vec<(u32, usize)> = Vec::new();
95 n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
96 }
97 n
98 }
99}
100impl<'de> DecodeBorrow<'de> for ListConfigResourcesResponse<'de> {
101 fn decode_borrow(buf: &mut &'de [u8], version: i16) -> Result<Self, ProtocolError> {
102 if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
103 return Err(ProtocolError::UnsupportedVersion {
104 api_key: API_KEY,
105 version,
106 });
107 }
108 let flex = is_flexible(version);
109 let mut out = Self::default();
110 if version >= 0 {
111 out.throttle_time_ms = get_i32(buf)?;
112 }
113 if version >= 0 {
114 out.error_code = get_i16(buf)?;
115 }
116 if version >= 0 {
117 out.config_resources = {
118 let n = get_array_len(buf, flex)?;
119 let mut v = Vec::with_capacity(n);
120 for _ in 0..n {
121 v.push(ConfigResource::decode_borrow(buf, version)?);
122 }
123 v
124 };
125 }
126 if flex {
127 out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| Ok(false))?;
128 }
129 Ok(out)
130 }
131}
132#[cfg(test)]
133impl ListConfigResourcesResponse<'_> {
134 #[must_use]
135 pub fn populated(version: i16) -> Self {
136 let mut m = Self::default();
137 if version >= 0 {
138 m.throttle_time_ms = 1i32;
139 }
140 if version >= 0 {
141 m.error_code = 1i16;
142 }
143 if version >= 0 {
144 m.config_resources = vec![ConfigResource::populated(version)];
145 }
146 m
147 }
148}
149#[derive(Debug, Clone, PartialEq, Eq)]
150pub struct ConfigResource<'a> {
151 pub resource_name: &'a str,
152 pub resource_type: i8,
153 pub unknown_tagged_fields: UnknownTaggedFields,
154}
155impl Default for ConfigResource<'_> {
156 fn default() -> Self {
157 Self {
158 resource_name: "",
159 resource_type: 16i8,
160 unknown_tagged_fields: UnknownTaggedFields::default(),
161 }
162 }
163}
164impl ConfigResource<'_> {
165 #[must_use]
166 pub fn to_owned(&self) -> list_config_resources_response::ConfigResource {
167 list_config_resources_response::ConfigResource {
168 resource_name: (self.resource_name).to_owned(),
169 resource_type: (self.resource_type),
170 unknown_tagged_fields: self.unknown_tagged_fields.clone(),
171 }
172 }
173}
174impl Encode for ConfigResource<'_> {
175 fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
176 let flex = version >= 0;
177 if version >= 0 {
178 if flex {
179 put_compact_string(buf, self.resource_name)?;
180 } else {
181 put_string(buf, self.resource_name)?;
182 }
183 }
184 if version >= 1 {
185 put_i8(buf, self.resource_type);
186 }
187 if flex {
188 let tagged = WriteTaggedFields::new();
189 tagged.write(buf, &self.unknown_tagged_fields)?;
190 }
191 Ok(())
192 }
193 fn encoded_len(&self, version: i16) -> usize {
194 let flex = version >= 0;
195 let mut n: usize = 0;
196 if version >= 0 {
197 n += if flex {
198 compact_string_len(self.resource_name)
199 } else {
200 string_len(self.resource_name)
201 };
202 }
203 if version >= 1 {
204 n += 1;
205 }
206 if flex {
207 let known_pairs: Vec<(u32, usize)> = Vec::new();
208 n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
209 }
210 n
211 }
212}
213impl<'de> DecodeBorrow<'de> for ConfigResource<'de> {
214 fn decode_borrow(buf: &mut &'de [u8], version: i16) -> Result<Self, ProtocolError> {
215 let flex = version >= 0;
216 let mut out = Self::default();
217 if version >= 0 {
218 out.resource_name = if flex {
219 get_compact_string_borrowed(buf)?
220 } else {
221 get_string_borrowed(buf)?
222 };
223 }
224 if version >= 1 {
225 out.resource_type = get_i8(buf)?;
226 }
227 if flex {
228 out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| Ok(false))?;
229 }
230 Ok(out)
231 }
232}
233#[cfg(test)]
234impl ConfigResource<'_> {
235 #[must_use]
236 pub fn populated(version: i16) -> Self {
237 let mut m = Self::default();
238 if version >= 0 {
239 m.resource_name = "x";
240 }
241 if version >= 1 {
242 m.resource_type = 1i8;
243 }
244 m
245 }
246}