Skip to main content

krabka_protocol/opt/rustwide/workdir/generated/
DescribeClusterRequest.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::describe_cluster_request,
7    primitives::fixed::{get_bool, get_i8, put_bool, put_i8},
8    tagged_fields::{WriteTaggedFields, read_tagged_fields, tagged_fields_len},
9};
10pub const API_KEY: i16 = 60;
11pub const MIN_VERSION: i16 = 0;
12pub const MAX_VERSION: i16 = 2;
13pub const LATEST_STABLE_VERSION: i16 = 2;
14pub const FLEXIBLE_MIN: i16 = 0;
15#[inline]
16#[must_use]
17pub fn is_flexible(version: i16) -> bool {
18    version >= FLEXIBLE_MIN
19}
20#[derive(Debug, Clone, PartialEq, Eq)]
21pub struct DescribeClusterRequest {
22    pub include_cluster_authorized_operations: bool,
23    pub endpoint_type: i8,
24    pub include_fenced_brokers: bool,
25    pub unknown_tagged_fields: UnknownTaggedFields,
26}
27impl Default for DescribeClusterRequest {
28    fn default() -> Self {
29        Self {
30            include_cluster_authorized_operations: false,
31            endpoint_type: 1i8,
32            include_fenced_brokers: false,
33            unknown_tagged_fields: UnknownTaggedFields::default(),
34        }
35    }
36}
37impl DescribeClusterRequest {
38    #[must_use]
39    pub fn to_owned(&self) -> describe_cluster_request::DescribeClusterRequest {
40        describe_cluster_request::DescribeClusterRequest {
41            include_cluster_authorized_operations: (self.include_cluster_authorized_operations),
42            endpoint_type: (self.endpoint_type),
43            include_fenced_brokers: (self.include_fenced_brokers),
44            unknown_tagged_fields: self.unknown_tagged_fields.clone(),
45        }
46    }
47}
48impl Encode for DescribeClusterRequest {
49    fn encode<B: BufMut>(&self, buf: &mut B, version: i16) -> Result<(), ProtocolError> {
50        if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
51            return Err(ProtocolError::UnsupportedVersion {
52                api_key: API_KEY,
53                version,
54            });
55        }
56        let flex = is_flexible(version);
57        if version >= 0 {
58            put_bool(buf, self.include_cluster_authorized_operations);
59        }
60        if version >= 1 {
61            put_i8(buf, self.endpoint_type);
62        }
63        if version >= 2 {
64            put_bool(buf, self.include_fenced_brokers);
65        }
66        if flex {
67            let tagged = WriteTaggedFields::new();
68            tagged.write(buf, &self.unknown_tagged_fields)?;
69        }
70        Ok(())
71    }
72    fn encoded_len(&self, version: i16) -> usize {
73        let flex = is_flexible(version);
74        let mut n: usize = 0;
75        if version >= 0 {
76            n += 1;
77        }
78        if version >= 1 {
79            n += 1;
80        }
81        if version >= 2 {
82            n += 1;
83        }
84        if flex {
85            let known_pairs: Vec<(u32, usize)> = Vec::new();
86            n += tagged_fields_len(&known_pairs, &self.unknown_tagged_fields);
87        }
88        n
89    }
90}
91impl<'de> DecodeBorrow<'de> for DescribeClusterRequest {
92    fn decode_borrow(buf: &mut &'de [u8], version: i16) -> Result<Self, ProtocolError> {
93        if !(MIN_VERSION..=MAX_VERSION).contains(&version) {
94            return Err(ProtocolError::UnsupportedVersion {
95                api_key: API_KEY,
96                version,
97            });
98        }
99        let flex = is_flexible(version);
100        let mut out = Self::default();
101        if version >= 0 {
102            out.include_cluster_authorized_operations = get_bool(buf)?;
103        }
104        if version >= 1 {
105            out.endpoint_type = get_i8(buf)?;
106        }
107        if version >= 2 {
108            out.include_fenced_brokers = get_bool(buf)?;
109        }
110        if flex {
111            out.unknown_tagged_fields = read_tagged_fields(buf, |_tag, _payload| Ok(false))?;
112        }
113        Ok(out)
114    }
115}
116#[cfg(test)]
117impl DescribeClusterRequest {
118    #[must_use]
119    pub fn populated(version: i16) -> Self {
120        let mut m = Self::default();
121        if version >= 0 {
122            m.include_cluster_authorized_operations = true;
123        }
124        if version >= 1 {
125            m.endpoint_type = 1i8;
126        }
127        if version >= 2 {
128            m.include_fenced_brokers = true;
129        }
130        m
131    }
132}