kafka_wire_protocol/schema/describe_groups_response/
v1.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, Response};
11use crate::readable_writable::{Readable, Writable};
12#[cfg(test)] use crate::test_utils::{proptest_strategies, serde_bytes};
13
14/// DescribeGroupsResponse, version 1.
15#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
16#[cfg_attr(test, derive(Arbitrary))]
17pub struct DescribeGroupsResponse {
18    /// The duration in milliseconds for which the request was throttled due to a quota violation, or zero if the request did not violate any quota.
19    pub throttle_time_ms: i32,
20    /// Each described group.
21    #[cfg_attr(test, proptest(strategy = "proptest_strategies::vec()"))]
22    pub groups: Vec<DescribedGroup>,
23}
24
25impl ApiMessage for DescribeGroupsResponse {
26    fn api_key(&self) -> i16 {
27        15
28    }
29    
30    fn version(&self) -> i16 {
31        1
32    }
33}
34
35impl Response for DescribeGroupsResponse { }
36
37impl Default for DescribeGroupsResponse {
38    fn default() -> Self {
39        DescribeGroupsResponse {
40            throttle_time_ms: 0_i32,
41            groups: Vec::<DescribedGroup>::new(),
42        }
43    }
44}
45
46impl DescribeGroupsResponse {
47    pub fn new(throttle_time_ms: i32, groups: Vec<DescribedGroup>) -> Self {
48        Self {
49            throttle_time_ms,
50            groups,
51        }
52    }
53}
54
55#[cfg(test)]
56mod tests_describe_groups_response_new_and_default {
57    use super::*;
58    
59    #[test]
60    fn test() {
61        let d = DescribeGroupsResponse::new(
62            0_i32,
63            Vec::<DescribedGroup>::new(),
64        );
65        assert_eq!(d, DescribeGroupsResponse::default());
66    }
67}
68
69impl Readable for DescribeGroupsResponse {
70    fn read(#[allow(unused)] input: &mut impl Read) -> Result<Self> {
71        let throttle_time_ms = i32::read(input)?;
72        let groups = read_array::<DescribedGroup>(input, "groups", false)?;
73        Ok(DescribeGroupsResponse {
74            throttle_time_ms, groups
75        })
76    }
77}
78
79impl Writable for DescribeGroupsResponse {
80    fn write(&self, #[allow(unused)] output: &mut impl Write) -> Result<()> {
81        self.throttle_time_ms.write(output)?;
82        write_array(output, "self.groups", &self.groups, false)?;
83        Ok(())
84    }
85}
86
87/// DescribedGroup, version 1.
88#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
89#[cfg_attr(test, derive(Arbitrary))]
90pub struct DescribedGroup {
91    /// The describe error, or 0 if there was no error.
92    pub error_code: i16,
93    /// The group ID string.
94    #[cfg_attr(test, proptest(strategy = "proptest_strategies::string()"))]
95    pub group_id: String,
96    /// The group state string, or the empty string.
97    #[cfg_attr(test, proptest(strategy = "proptest_strategies::string()"))]
98    pub group_state: String,
99    /// The group protocol type, or the empty string.
100    #[cfg_attr(test, proptest(strategy = "proptest_strategies::string()"))]
101    pub protocol_type: String,
102    /// The group protocol data, or the empty string.
103    #[cfg_attr(test, proptest(strategy = "proptest_strategies::string()"))]
104    pub protocol_data: String,
105    /// The group members.
106    #[cfg_attr(test, proptest(strategy = "proptest_strategies::vec()"))]
107    pub members: Vec<DescribedGroupMember>,
108}
109
110impl Default for DescribedGroup {
111    fn default() -> Self {
112        DescribedGroup {
113            error_code: 0_i16,
114            group_id: String::from(""),
115            group_state: String::from(""),
116            protocol_type: String::from(""),
117            protocol_data: String::from(""),
118            members: Vec::<DescribedGroupMember>::new(),
119        }
120    }
121}
122
123impl DescribedGroup {
124    pub fn new<S1: AsRef<str>, S2: AsRef<str>, S3: AsRef<str>, S4: AsRef<str>>(error_code: i16, group_id: S1, group_state: S2, protocol_type: S3, protocol_data: S4, members: Vec<DescribedGroupMember>) -> Self {
125        Self {
126            error_code,
127            group_id: group_id.as_ref().to_string(),
128            group_state: group_state.as_ref().to_string(),
129            protocol_type: protocol_type.as_ref().to_string(),
130            protocol_data: protocol_data.as_ref().to_string(),
131            members,
132        }
133    }
134}
135
136#[cfg(test)]
137mod tests_described_group_new_and_default {
138    use super::*;
139    
140    #[test]
141    fn test() {
142        let d = DescribedGroup::new(
143            0_i16,
144            String::from(""),
145            String::from(""),
146            String::from(""),
147            String::from(""),
148            Vec::<DescribedGroupMember>::new(),
149        );
150        assert_eq!(d, DescribedGroup::default());
151    }
152}
153
154impl Readable for DescribedGroup {
155    fn read(#[allow(unused)] input: &mut impl Read) -> Result<Self> {
156        let error_code = i16::read(input)?;
157        let group_id = String::read_ext(input, "group_id", false)?;
158        let group_state = String::read_ext(input, "group_state", false)?;
159        let protocol_type = String::read_ext(input, "protocol_type", false)?;
160        let protocol_data = String::read_ext(input, "protocol_data", false)?;
161        let members = read_array::<DescribedGroupMember>(input, "members", false)?;
162        Ok(DescribedGroup {
163            error_code, group_id, group_state, protocol_type, protocol_data, members
164        })
165    }
166}
167
168impl Writable for DescribedGroup {
169    fn write(&self, #[allow(unused)] output: &mut impl Write) -> Result<()> {
170        self.error_code.write(output)?;
171        self.group_id.write_ext(output, "self.group_id", false)?;
172        self.group_state.write_ext(output, "self.group_state", false)?;
173        self.protocol_type.write_ext(output, "self.protocol_type", false)?;
174        self.protocol_data.write_ext(output, "self.protocol_data", false)?;
175        write_array(output, "self.members", &self.members, false)?;
176        Ok(())
177    }
178}
179
180/// DescribedGroupMember, version 1.
181#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
182#[cfg_attr(test, derive(Arbitrary))]
183pub struct DescribedGroupMember {
184    /// The member id.
185    #[cfg_attr(test, proptest(strategy = "proptest_strategies::string()"))]
186    pub member_id: String,
187    /// The client ID used in the member's latest join group request.
188    #[cfg_attr(test, proptest(strategy = "proptest_strategies::string()"))]
189    pub client_id: String,
190    /// The client host.
191    #[cfg_attr(test, proptest(strategy = "proptest_strategies::string()"))]
192    pub client_host: String,
193    /// The metadata corresponding to the current group protocol in use.
194    #[cfg_attr(test, proptest(strategy = "proptest_strategies::bytes()"))]
195    #[cfg_attr(test, serde(with="serde_bytes"))]
196    pub member_metadata: Vec<u8>,
197    /// The current assignment provided by the group leader.
198    #[cfg_attr(test, proptest(strategy = "proptest_strategies::bytes()"))]
199    #[cfg_attr(test, serde(with="serde_bytes"))]
200    pub member_assignment: Vec<u8>,
201}
202
203impl Default for DescribedGroupMember {
204    fn default() -> Self {
205        DescribedGroupMember {
206            member_id: String::from(""),
207            client_id: String::from(""),
208            client_host: String::from(""),
209            member_metadata: Vec::new(),
210            member_assignment: Vec::new(),
211        }
212    }
213}
214
215impl DescribedGroupMember {
216    pub fn new<S1: AsRef<str>, S2: AsRef<str>, S3: AsRef<str>>(member_id: S1, client_id: S2, client_host: S3, member_metadata: Vec<u8>, member_assignment: Vec<u8>) -> Self {
217        Self {
218            member_id: member_id.as_ref().to_string(),
219            client_id: client_id.as_ref().to_string(),
220            client_host: client_host.as_ref().to_string(),
221            member_metadata,
222            member_assignment,
223        }
224    }
225}
226
227#[cfg(test)]
228mod tests_described_group_member_new_and_default {
229    use super::*;
230    
231    #[test]
232    fn test() {
233        let d = DescribedGroupMember::new(
234            String::from(""),
235            String::from(""),
236            String::from(""),
237            Vec::new(),
238            Vec::new(),
239        );
240        assert_eq!(d, DescribedGroupMember::default());
241    }
242}
243
244impl Readable for DescribedGroupMember {
245    fn read(#[allow(unused)] input: &mut impl Read) -> Result<Self> {
246        let member_id = String::read_ext(input, "member_id", false)?;
247        let client_id = String::read_ext(input, "client_id", false)?;
248        let client_host = String::read_ext(input, "client_host", false)?;
249        let member_metadata = read_bytes(input, "member_metadata", false)?;
250        let member_assignment = read_bytes(input, "member_assignment", false)?;
251        Ok(DescribedGroupMember {
252            member_id, client_id, client_host, member_metadata, member_assignment
253        })
254    }
255}
256
257impl Writable for DescribedGroupMember {
258    fn write(&self, #[allow(unused)] output: &mut impl Write) -> Result<()> {
259        self.member_id.write_ext(output, "self.member_id", false)?;
260        self.client_id.write_ext(output, "self.client_id", false)?;
261        self.client_host.write_ext(output, "self.client_host", false)?;
262        write_bytes(output, "self.member_metadata", &self.member_metadata, false)?;
263        write_bytes(output, "self.member_assignment", &self.member_assignment, false)?;
264        Ok(())
265    }
266}
267
268#[cfg(test)]
269mod tests {
270    use super::*;
271    use proptest::prelude::*;
272    
273    #[test]
274    fn test_java_default() {
275        crate::test_utils::test_java_default::<DescribeGroupsResponse>("DescribeGroupsResponse", 1);
276    }
277    
278    proptest! {
279        #[test]
280        fn test_serde(data: DescribeGroupsResponse) {
281            crate::test_utils::test_serde(&data)?;
282        }
283    }
284    
285    proptest! {
286        #[test]
287        fn test_java_arbitrary(data: DescribeGroupsResponse) {
288            crate::test_utils::test_java_arbitrary(&data, "DescribeGroupsResponse", 1);
289        }
290    }
291}