Skip to main content

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