kafka_wire_protocol/schema/heartbeat_request/
v1.rs1use 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};
10#[cfg(test)] use crate::test_utils::proptest_strategies;
11
12#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
14#[cfg_attr(test, derive(Arbitrary))]
15pub struct HeartbeatRequest {
16 #[cfg_attr(test, proptest(strategy = "proptest_strategies::string()"))]
18 pub group_id: String,
19 pub generation_id: i32,
21 #[cfg_attr(test, proptest(strategy = "proptest_strategies::string()"))]
23 pub member_id: String,
24}
25
26impl ApiMessage for HeartbeatRequest {
27 fn api_key(&self) -> i16 {
28 12
29 }
30
31 fn version(&self) -> i16 {
32 1
33 }
34}
35
36impl Request for HeartbeatRequest { }
37
38impl Default for HeartbeatRequest {
39 fn default() -> Self {
40 HeartbeatRequest {
41 group_id: String::from(""),
42 generation_id: 0_i32,
43 member_id: String::from(""),
44 }
45 }
46}
47
48impl HeartbeatRequest {
49 pub fn new<S1: AsRef<str>, S2: AsRef<str>>(group_id: S1, generation_id: i32, member_id: S2) -> Self {
50 Self {
51 group_id: group_id.as_ref().to_string(),
52 generation_id,
53 member_id: member_id.as_ref().to_string(),
54 }
55 }
56}
57
58#[cfg(test)]
59mod tests_heartbeat_request_new_and_default {
60 use super::*;
61
62 #[test]
63 fn test() {
64 let d = HeartbeatRequest::new(
65 String::from(""),
66 0_i32,
67 String::from(""),
68 );
69 assert_eq!(d, HeartbeatRequest::default());
70 }
71}
72
73impl Readable for HeartbeatRequest {
74 fn read(#[allow(unused)] input: &mut impl Read) -> Result<Self> {
75 let group_id = String::read_ext(input, "group_id", false)?;
76 let generation_id = i32::read(input)?;
77 let member_id = String::read_ext(input, "member_id", false)?;
78 Ok(HeartbeatRequest {
79 group_id, generation_id, member_id
80 })
81 }
82}
83
84impl Writable for HeartbeatRequest {
85 fn write(&self, #[allow(unused)] output: &mut impl Write) -> Result<()> {
86 self.group_id.write_ext(output, "self.group_id", false)?;
87 self.generation_id.write(output)?;
88 self.member_id.write_ext(output, "self.member_id", false)?;
89 Ok(())
90 }
91}
92
93#[cfg(test)]
94mod tests {
95 use super::*;
96 use proptest::prelude::*;
97
98 #[test]
99 fn test_java_default() {
100 crate::test_utils::test_java_default::<HeartbeatRequest>("HeartbeatRequest", 1);
101 }
102
103 proptest! {
104 #[test]
105 fn test_serde(data: HeartbeatRequest) {
106 crate::test_utils::test_serde(&data)?;
107 }
108 }
109
110 proptest! {
111 #[test]
112 fn test_java_arbitrary(data: HeartbeatRequest) {
113 crate::test_utils::test_java_arbitrary(&data, "HeartbeatRequest", 1);
114 }
115 }
116}