kafka_wire_protocol/schema/list_groups_request/
v4.rs1use 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::markers::{ApiMessage, Request};
10use crate::readable_writable::{Readable, Writable};
11use crate::tagged_fields::{RawTaggedField, read_tagged_fields, write_tagged_fields};
12#[cfg(test)] use crate::test_utils::proptest_strategies;
13
14#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
16#[cfg_attr(test, derive(Arbitrary))]
17pub struct ListGroupsRequest {
18 #[cfg_attr(test, proptest(strategy = "proptest_strategies::vec()"))]
20 pub states_filter: Vec<String>,
21 #[cfg_attr(test, proptest(strategy = "proptest_strategies::unknown_tagged_fields()"))]
23 pub _unknown_tagged_fields: Vec<RawTaggedField>,
24}
25
26impl ApiMessage for ListGroupsRequest {
27 fn api_key(&self) -> i16 {
28 16
29 }
30
31 fn version(&self) -> i16 {
32 4
33 }
34}
35
36impl Request for ListGroupsRequest { }
37
38impl Default for ListGroupsRequest {
39 fn default() -> Self {
40 ListGroupsRequest {
41 states_filter: Vec::<String>::new(),
42 _unknown_tagged_fields: Vec::new(),
43 }
44 }
45}
46
47impl ListGroupsRequest {
48 pub fn new(states_filter: Vec<String>) -> Self {
49 Self {
50 states_filter,
51 _unknown_tagged_fields: vec![],
52 }
53 }
54}
55
56#[cfg(test)]
57mod tests_list_groups_request_new_and_default {
58 use super::*;
59
60 #[test]
61 fn test() {
62 let d = ListGroupsRequest::new(
63 Vec::<String>::new(),
64 );
65 assert_eq!(d, ListGroupsRequest::default());
66 }
67}
68
69impl Readable for ListGroupsRequest {
70 fn read(#[allow(unused)] input: &mut impl Read) -> Result<Self> {
71 let states_filter = read_array::<String>(input, "states_filter", true)?;
72 let tagged_fields_callback = |tag: i32, _: &[u8]| {
73 match tag {
74 _ => Ok(false)
75 }
76 };
77 let _unknown_tagged_fields = read_tagged_fields(input, tagged_fields_callback)?;
78 Ok(ListGroupsRequest {
79 states_filter, _unknown_tagged_fields
80 })
81 }
82}
83
84impl Writable for ListGroupsRequest {
85 fn write(&self, #[allow(unused)] output: &mut impl Write) -> Result<()> {
86 write_array(output, "self.states_filter", &self.states_filter, true)?;
87 write_tagged_fields(output, &[], &self._unknown_tagged_fields)?;
88 Ok(())
89 }
90}
91
92#[cfg(test)]
93mod tests {
94 use super::*;
95 use proptest::prelude::*;
96
97 #[test]
98 fn test_java_default() {
99 crate::test_utils::test_java_default::<ListGroupsRequest>("ListGroupsRequest", 4);
100 }
101
102 proptest! {
103 #[test]
104 fn test_serde(data: ListGroupsRequest) {
105 crate::test_utils::test_serde(&data)?;
106 }
107 }
108
109 proptest! {
110 #[test]
111 fn test_java_arbitrary(data: ListGroupsRequest) {
112 crate::test_utils::test_java_arbitrary(&data, "ListGroupsRequest", 4);
113 }
114 }
115}