kafka_wire_protocol/schema/sync_group_request/
v3.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::arrays::{read_array, write_array};
9use crate::bytes::{read_bytes, write_bytes};
10use crate::markers::{ApiMessage, Request};
11use crate::readable_writable::{Readable, Writable};
12#[cfg(test)] use crate::test_utils::{proptest_strategies, serde_bytes};
13
14/// SyncGroupRequest, version 3.
15#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
16#[cfg_attr(test, derive(Arbitrary))]
17pub struct SyncGroupRequest {
18    /// The unique group identifier.
19    #[cfg_attr(test, proptest(strategy = "proptest_strategies::string()"))]
20    pub group_id: String,
21    /// The generation of the group.
22    pub generation_id: i32,
23    /// The member ID assigned by the group.
24    #[cfg_attr(test, proptest(strategy = "proptest_strategies::string()"))]
25    pub member_id: String,
26    /// The unique identifier of the consumer instance provided by end user.
27    #[cfg_attr(test, proptest(strategy = "proptest_strategies::optional_string()"))]
28    pub group_instance_id: Option<String>,
29    /// Each assignment.
30    #[cfg_attr(test, proptest(strategy = "proptest_strategies::vec()"))]
31    pub assignments: Vec<SyncGroupRequestAssignment>,
32}
33
34impl ApiMessage for SyncGroupRequest {
35    fn api_key(&self) -> i16 {
36        14
37    }
38    
39    fn version(&self) -> i16 {
40        3
41    }
42}
43
44impl Request for SyncGroupRequest { }
45
46impl Default for SyncGroupRequest {
47    fn default() -> Self {
48        SyncGroupRequest {
49            group_id: String::from(""),
50            generation_id: 0_i32,
51            member_id: String::from(""),
52            group_instance_id: None,
53            assignments: Vec::<SyncGroupRequestAssignment>::new(),
54        }
55    }
56}
57
58impl SyncGroupRequest {
59    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>, assignments: Vec<SyncGroupRequestAssignment>) -> Self {
60        Self {
61            group_id: group_id.as_ref().to_string(),
62            generation_id,
63            member_id: member_id.as_ref().to_string(),
64            group_instance_id: group_instance_id.map(|s| s.as_ref().to_string()),
65            assignments,
66        }
67    }
68}
69
70#[cfg(test)]
71mod tests_sync_group_request_new_and_default {
72    use super::*;
73    
74    #[test]
75    fn test() {
76        let d = SyncGroupRequest::new(
77            String::from(""),
78            0_i32,
79            String::from(""),
80            None::<String>,
81            Vec::<SyncGroupRequestAssignment>::new(),
82        );
83        assert_eq!(d, SyncGroupRequest::default());
84    }
85}
86
87impl Readable for SyncGroupRequest {
88    fn read(#[allow(unused)] input: &mut impl Read) -> Result<Self> {
89        let group_id = String::read_ext(input, "group_id", false)?;
90        let generation_id = i32::read(input)?;
91        let member_id = String::read_ext(input, "member_id", false)?;
92        let group_instance_id = Option::<String>::read_ext(input, "group_instance_id", false)?;
93        let assignments = read_array::<SyncGroupRequestAssignment>(input, "assignments", false)?;
94        Ok(SyncGroupRequest {
95            group_id, generation_id, member_id, group_instance_id, assignments
96        })
97    }
98}
99
100impl Writable for SyncGroupRequest {
101    fn write(&self, #[allow(unused)] output: &mut impl Write) -> Result<()> {
102        self.group_id.write_ext(output, "self.group_id", false)?;
103        self.generation_id.write(output)?;
104        self.member_id.write_ext(output, "self.member_id", false)?;
105        self.group_instance_id.write_ext(output, "self.group_instance_id", false)?;
106        write_array(output, "self.assignments", &self.assignments, false)?;
107        Ok(())
108    }
109}
110
111/// SyncGroupRequestAssignment, version 3.
112#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
113#[cfg_attr(test, derive(Arbitrary))]
114pub struct SyncGroupRequestAssignment {
115    /// The ID of the member to assign.
116    #[cfg_attr(test, proptest(strategy = "proptest_strategies::string()"))]
117    pub member_id: String,
118    /// The member assignment.
119    #[cfg_attr(test, proptest(strategy = "proptest_strategies::bytes()"))]
120    #[cfg_attr(test, serde(with="serde_bytes"))]
121    pub assignment: Vec<u8>,
122}
123
124impl Default for SyncGroupRequestAssignment {
125    fn default() -> Self {
126        SyncGroupRequestAssignment {
127            member_id: String::from(""),
128            assignment: Vec::new(),
129        }
130    }
131}
132
133impl SyncGroupRequestAssignment {
134    pub fn new<S1: AsRef<str>>(member_id: S1, assignment: Vec<u8>) -> Self {
135        Self {
136            member_id: member_id.as_ref().to_string(),
137            assignment,
138        }
139    }
140}
141
142#[cfg(test)]
143mod tests_sync_group_request_assignment_new_and_default {
144    use super::*;
145    
146    #[test]
147    fn test() {
148        let d = SyncGroupRequestAssignment::new(
149            String::from(""),
150            Vec::new(),
151        );
152        assert_eq!(d, SyncGroupRequestAssignment::default());
153    }
154}
155
156impl Readable for SyncGroupRequestAssignment {
157    fn read(#[allow(unused)] input: &mut impl Read) -> Result<Self> {
158        let member_id = String::read_ext(input, "member_id", false)?;
159        let assignment = read_bytes(input, "assignment", false)?;
160        Ok(SyncGroupRequestAssignment {
161            member_id, assignment
162        })
163    }
164}
165
166impl Writable for SyncGroupRequestAssignment {
167    fn write(&self, #[allow(unused)] output: &mut impl Write) -> Result<()> {
168        self.member_id.write_ext(output, "self.member_id", false)?;
169        write_bytes(output, "self.assignment", &self.assignment, false)?;
170        Ok(())
171    }
172}
173
174#[cfg(test)]
175mod tests {
176    use super::*;
177    use proptest::prelude::*;
178    
179    #[test]
180    fn test_java_default() {
181        crate::test_utils::test_java_default::<SyncGroupRequest>("SyncGroupRequest", 3);
182    }
183    
184    proptest! {
185        #[test]
186        fn test_serde(data: SyncGroupRequest) {
187            crate::test_utils::test_serde(&data)?;
188        }
189    }
190    
191    proptest! {
192        #[test]
193        fn test_java_arbitrary(data: SyncGroupRequest) {
194            crate::test_utils::test_java_arbitrary(&data, "SyncGroupRequest", 3);
195        }
196    }
197}