Skip to main content

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