kafka_wire_protocol/schema/heartbeat_request/
v4.rs

1// This file was generated. Do not edit.
2
3use std::io::{Read, Result, Write};
4
5use serde::{Deserialize, Serialize};
6#[cfg(test)] use proptest_derive::Arbitrary;
7
8use crate::markers::{ApiMessage, Request};
9use crate::readable_writable::{Readable, Writable};
10use crate::tagged_fields::{RawTaggedField, read_tagged_fields, write_tagged_fields};
11#[cfg(test)] use crate::test_utils::proptest_strategies;
12
13/// HeartbeatRequest, version 4.
14#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
15#[cfg_attr(test, derive(Arbitrary))]
16pub struct HeartbeatRequest {
17    /// The group id.
18    #[cfg_attr(test, proptest(strategy = "proptest_strategies::string()"))]
19    pub group_id: String,
20    /// The generation of the group.
21    pub generation_id: i32,
22    /// The member ID.
23    #[cfg_attr(test, proptest(strategy = "proptest_strategies::string()"))]
24    pub member_id: String,
25    /// The unique identifier of the consumer instance provided by end user.
26    #[cfg_attr(test, proptest(strategy = "proptest_strategies::optional_string()"))]
27    pub group_instance_id: Option<String>,
28    /// Unknown tagged fields.
29    #[cfg_attr(test, proptest(strategy = "proptest_strategies::unknown_tagged_fields()"))]
30    pub _unknown_tagged_fields: Vec<RawTaggedField>,
31}
32
33impl ApiMessage for HeartbeatRequest {
34    fn api_key(&self) -> i16 {
35        12
36    }
37    
38    fn version(&self) -> i16 {
39        4
40    }
41}
42
43impl Request for HeartbeatRequest { }
44
45impl Default for HeartbeatRequest {
46    fn default() -> Self {
47        HeartbeatRequest {
48            group_id: String::from(""),
49            generation_id: 0_i32,
50            member_id: String::from(""),
51            group_instance_id: None,
52            _unknown_tagged_fields: Vec::new(),
53        }
54    }
55}
56
57impl HeartbeatRequest {
58    pub fn new<S1: AsRef<str>, S2: AsRef<str>, S3: AsRef<str>>(group_id: S1, generation_id: i32, member_id: S2, group_instance_id: Option<S3>) -> Self {
59        Self {
60            group_id: group_id.as_ref().to_string(),
61            generation_id,
62            member_id: member_id.as_ref().to_string(),
63            group_instance_id: group_instance_id.map(|s| s.as_ref().to_string()),
64            _unknown_tagged_fields: vec![],
65        }
66    }
67}
68
69#[cfg(test)]
70mod tests_heartbeat_request_new_and_default {
71    use super::*;
72    
73    #[test]
74    fn test() {
75        let d = HeartbeatRequest::new(
76            String::from(""),
77            0_i32,
78            String::from(""),
79            None::<String>,
80        );
81        assert_eq!(d, HeartbeatRequest::default());
82    }
83}
84
85impl Readable for HeartbeatRequest {
86    fn read(#[allow(unused)] input: &mut impl Read) -> Result<Self> {
87        let group_id = String::read_ext(input, "group_id", true)?;
88        let generation_id = i32::read(input)?;
89        let member_id = String::read_ext(input, "member_id", true)?;
90        let group_instance_id = Option::<String>::read_ext(input, "group_instance_id", true)?;
91        let tagged_fields_callback = |tag: i32, _: &[u8]| {
92            match tag {
93                _ => Ok(false)
94            }
95        };
96        let _unknown_tagged_fields = read_tagged_fields(input, tagged_fields_callback)?;
97        Ok(HeartbeatRequest {
98            group_id, generation_id, member_id, group_instance_id, _unknown_tagged_fields
99        })
100    }
101}
102
103impl Writable for HeartbeatRequest {
104    fn write(&self, #[allow(unused)] output: &mut impl Write) -> Result<()> {
105        self.group_id.write_ext(output, "self.group_id", true)?;
106        self.generation_id.write(output)?;
107        self.member_id.write_ext(output, "self.member_id", true)?;
108        self.group_instance_id.write_ext(output, "self.group_instance_id", true)?;
109        write_tagged_fields(output, &[], &self._unknown_tagged_fields)?;
110        Ok(())
111    }
112}
113
114#[cfg(test)]
115mod tests {
116    use super::*;
117    use proptest::prelude::*;
118    
119    #[test]
120    fn test_java_default() {
121        crate::test_utils::test_java_default::<HeartbeatRequest>("HeartbeatRequest", 4);
122    }
123    
124    proptest! {
125        #[test]
126        fn test_serde(data: HeartbeatRequest) {
127            crate::test_utils::test_serde(&data)?;
128        }
129    }
130    
131    proptest! {
132        #[test]
133        fn test_java_arbitrary(data: HeartbeatRequest) {
134            crate::test_utils::test_java_arbitrary(&data, "HeartbeatRequest", 4);
135        }
136    }
137}