Skip to main content

krabka_protocol/opt/rustwide/workdir/generated/
ListConfigResourcesResponse.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::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}