kafka_wire_protocol/schema/describe_quorum_request/
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::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/// DescribeQuorumRequest, version 1.
15#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
16#[cfg_attr(test, derive(Arbitrary))]
17pub struct DescribeQuorumRequest {
18    /// The topics to describe.
19    #[cfg_attr(test, proptest(strategy = "proptest_strategies::vec()"))]
20    pub topics: Vec<TopicData>,
21    /// Unknown tagged fields.
22    #[cfg_attr(test, proptest(strategy = "proptest_strategies::unknown_tagged_fields()"))]
23    pub _unknown_tagged_fields: Vec<RawTaggedField>,
24}
25
26impl ApiMessage for DescribeQuorumRequest {
27    fn api_key(&self) -> i16 {
28        55
29    }
30    
31    fn version(&self) -> i16 {
32        1
33    }
34}
35
36impl Request for DescribeQuorumRequest { }
37
38impl Default for DescribeQuorumRequest {
39    fn default() -> Self {
40        DescribeQuorumRequest {
41            topics: Vec::<TopicData>::new(),
42            _unknown_tagged_fields: Vec::new(),
43        }
44    }
45}
46
47impl DescribeQuorumRequest {
48    pub fn new(topics: Vec<TopicData>) -> Self {
49        Self {
50            topics,
51            _unknown_tagged_fields: vec![],
52        }
53    }
54}
55
56#[cfg(test)]
57mod tests_describe_quorum_request_new_and_default {
58    use super::*;
59    
60    #[test]
61    fn test() {
62        let d = DescribeQuorumRequest::new(
63            Vec::<TopicData>::new(),
64        );
65        assert_eq!(d, DescribeQuorumRequest::default());
66    }
67}
68
69impl Readable for DescribeQuorumRequest {
70    fn read(#[allow(unused)] input: &mut impl Read) -> Result<Self> {
71        let topics = read_array::<TopicData>(input, "topics", 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(DescribeQuorumRequest {
79            topics, _unknown_tagged_fields
80        })
81    }
82}
83
84impl Writable for DescribeQuorumRequest {
85    fn write(&self, #[allow(unused)] output: &mut impl Write) -> Result<()> {
86        write_array(output, "self.topics", &self.topics, true)?;
87        write_tagged_fields(output, &[], &self._unknown_tagged_fields)?;
88        Ok(())
89    }
90}
91
92/// TopicData, version 1.
93#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
94#[cfg_attr(test, derive(Arbitrary))]
95pub struct TopicData {
96    /// The topic name.
97    #[cfg_attr(test, proptest(strategy = "proptest_strategies::string()"))]
98    pub topic_name: String,
99    /// The partitions to describe.
100    #[cfg_attr(test, proptest(strategy = "proptest_strategies::vec()"))]
101    pub partitions: Vec<PartitionData>,
102    /// Unknown tagged fields.
103    #[cfg_attr(test, proptest(strategy = "proptest_strategies::unknown_tagged_fields()"))]
104    pub _unknown_tagged_fields: Vec<RawTaggedField>,
105}
106
107impl Default for TopicData {
108    fn default() -> Self {
109        TopicData {
110            topic_name: String::from(""),
111            partitions: Vec::<PartitionData>::new(),
112            _unknown_tagged_fields: Vec::new(),
113        }
114    }
115}
116
117impl TopicData {
118    pub fn new<S1: AsRef<str>>(topic_name: S1, partitions: Vec<PartitionData>) -> Self {
119        Self {
120            topic_name: topic_name.as_ref().to_string(),
121            partitions,
122            _unknown_tagged_fields: vec![],
123        }
124    }
125}
126
127#[cfg(test)]
128mod tests_topic_data_new_and_default {
129    use super::*;
130    
131    #[test]
132    fn test() {
133        let d = TopicData::new(
134            String::from(""),
135            Vec::<PartitionData>::new(),
136        );
137        assert_eq!(d, TopicData::default());
138    }
139}
140
141impl Readable for TopicData {
142    fn read(#[allow(unused)] input: &mut impl Read) -> Result<Self> {
143        let topic_name = String::read_ext(input, "topic_name", true)?;
144        let partitions = read_array::<PartitionData>(input, "partitions", true)?;
145        let tagged_fields_callback = |tag: i32, _: &[u8]| {
146            match tag {
147                _ => Ok(false)
148            }
149        };
150        let _unknown_tagged_fields = read_tagged_fields(input, tagged_fields_callback)?;
151        Ok(TopicData {
152            topic_name, partitions, _unknown_tagged_fields
153        })
154    }
155}
156
157impl Writable for TopicData {
158    fn write(&self, #[allow(unused)] output: &mut impl Write) -> Result<()> {
159        self.topic_name.write_ext(output, "self.topic_name", true)?;
160        write_array(output, "self.partitions", &self.partitions, true)?;
161        write_tagged_fields(output, &[], &self._unknown_tagged_fields)?;
162        Ok(())
163    }
164}
165
166/// PartitionData, version 1.
167#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
168#[cfg_attr(test, derive(Arbitrary))]
169pub struct PartitionData {
170    /// The partition index.
171    pub partition_index: i32,
172    /// Unknown tagged fields.
173    #[cfg_attr(test, proptest(strategy = "proptest_strategies::unknown_tagged_fields()"))]
174    pub _unknown_tagged_fields: Vec<RawTaggedField>,
175}
176
177impl Default for PartitionData {
178    fn default() -> Self {
179        PartitionData {
180            partition_index: 0_i32,
181            _unknown_tagged_fields: Vec::new(),
182        }
183    }
184}
185
186impl PartitionData {
187    pub fn new(partition_index: i32) -> Self {
188        Self {
189            partition_index,
190            _unknown_tagged_fields: vec![],
191        }
192    }
193}
194
195#[cfg(test)]
196mod tests_partition_data_new_and_default {
197    use super::*;
198    
199    #[test]
200    fn test() {
201        let d = PartitionData::new(
202            0_i32,
203        );
204        assert_eq!(d, PartitionData::default());
205    }
206}
207
208impl Readable for PartitionData {
209    fn read(#[allow(unused)] input: &mut impl Read) -> Result<Self> {
210        let partition_index = i32::read(input)?;
211        let tagged_fields_callback = |tag: i32, _: &[u8]| {
212            match tag {
213                _ => Ok(false)
214            }
215        };
216        let _unknown_tagged_fields = read_tagged_fields(input, tagged_fields_callback)?;
217        Ok(PartitionData {
218            partition_index, _unknown_tagged_fields
219        })
220    }
221}
222
223impl Writable for PartitionData {
224    fn write(&self, #[allow(unused)] output: &mut impl Write) -> Result<()> {
225        self.partition_index.write(output)?;
226        write_tagged_fields(output, &[], &self._unknown_tagged_fields)?;
227        Ok(())
228    }
229}
230
231#[cfg(test)]
232mod tests {
233    use super::*;
234    use proptest::prelude::*;
235    
236    #[test]
237    fn test_java_default() {
238        crate::test_utils::test_java_default::<DescribeQuorumRequest>("DescribeQuorumRequest", 1);
239    }
240    
241    proptest! {
242        #[test]
243        fn test_serde(data: DescribeQuorumRequest) {
244            crate::test_utils::test_serde(&data)?;
245        }
246    }
247    
248    proptest! {
249        #[test]
250        fn test_java_arbitrary(data: DescribeQuorumRequest) {
251            crate::test_utils::test_java_arbitrary(&data, "DescribeQuorumRequest", 1);
252        }
253    }
254}