kafka_wire_protocol/schema/delete_topics_response/
v4.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, Response};
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/// DeleteTopicsResponse, version 4.
15#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
16#[cfg_attr(test, derive(Arbitrary))]
17pub struct DeleteTopicsResponse {
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    /// The results for each topic we tried to delete.
21    #[cfg_attr(test, proptest(strategy = "proptest_strategies::vec()"))]
22    pub responses: Vec<DeletableTopicResult>,
23    /// Unknown tagged fields.
24    #[cfg_attr(test, proptest(strategy = "proptest_strategies::unknown_tagged_fields()"))]
25    pub _unknown_tagged_fields: Vec<RawTaggedField>,
26}
27
28impl ApiMessage for DeleteTopicsResponse {
29    fn api_key(&self) -> i16 {
30        20
31    }
32    
33    fn version(&self) -> i16 {
34        4
35    }
36}
37
38impl Response for DeleteTopicsResponse { }
39
40impl Default for DeleteTopicsResponse {
41    fn default() -> Self {
42        DeleteTopicsResponse {
43            throttle_time_ms: 0_i32,
44            responses: Vec::<DeletableTopicResult>::new(),
45            _unknown_tagged_fields: Vec::new(),
46        }
47    }
48}
49
50impl DeleteTopicsResponse {
51    pub fn new(throttle_time_ms: i32, responses: Vec<DeletableTopicResult>) -> Self {
52        Self {
53            throttle_time_ms,
54            responses,
55            _unknown_tagged_fields: vec![],
56        }
57    }
58}
59
60#[cfg(test)]
61mod tests_delete_topics_response_new_and_default {
62    use super::*;
63    
64    #[test]
65    fn test() {
66        let d = DeleteTopicsResponse::new(
67            0_i32,
68            Vec::<DeletableTopicResult>::new(),
69        );
70        assert_eq!(d, DeleteTopicsResponse::default());
71    }
72}
73
74impl Readable for DeleteTopicsResponse {
75    fn read(#[allow(unused)] input: &mut impl Read) -> Result<Self> {
76        let throttle_time_ms = i32::read(input)?;
77        let responses = read_array::<DeletableTopicResult>(input, "responses", true)?;
78        let tagged_fields_callback = |tag: i32, _: &[u8]| {
79            match tag {
80                _ => Ok(false)
81            }
82        };
83        let _unknown_tagged_fields = read_tagged_fields(input, tagged_fields_callback)?;
84        Ok(DeleteTopicsResponse {
85            throttle_time_ms, responses, _unknown_tagged_fields
86        })
87    }
88}
89
90impl Writable for DeleteTopicsResponse {
91    fn write(&self, #[allow(unused)] output: &mut impl Write) -> Result<()> {
92        self.throttle_time_ms.write(output)?;
93        write_array(output, "self.responses", &self.responses, true)?;
94        write_tagged_fields(output, &[], &self._unknown_tagged_fields)?;
95        Ok(())
96    }
97}
98
99/// DeletableTopicResult, version 4.
100#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
101#[cfg_attr(test, derive(Arbitrary))]
102pub struct DeletableTopicResult {
103    /// The topic name.
104    #[cfg_attr(test, proptest(strategy = "proptest_strategies::string()"))]
105    pub name: String,
106    /// The deletion error, or 0 if the deletion succeeded.
107    pub error_code: i16,
108    /// Unknown tagged fields.
109    #[cfg_attr(test, proptest(strategy = "proptest_strategies::unknown_tagged_fields()"))]
110    pub _unknown_tagged_fields: Vec<RawTaggedField>,
111}
112
113impl Default for DeletableTopicResult {
114    fn default() -> Self {
115        DeletableTopicResult {
116            name: String::from(""),
117            error_code: 0_i16,
118            _unknown_tagged_fields: Vec::new(),
119        }
120    }
121}
122
123impl DeletableTopicResult {
124    pub fn new<S1: AsRef<str>>(name: S1, error_code: i16) -> Self {
125        Self {
126            name: name.as_ref().to_string(),
127            error_code,
128            _unknown_tagged_fields: vec![],
129        }
130    }
131}
132
133#[cfg(test)]
134mod tests_deletable_topic_result_new_and_default {
135    use super::*;
136    
137    #[test]
138    fn test() {
139        let d = DeletableTopicResult::new(
140            String::from(""),
141            0_i16,
142        );
143        assert_eq!(d, DeletableTopicResult::default());
144    }
145}
146
147impl Readable for DeletableTopicResult {
148    fn read(#[allow(unused)] input: &mut impl Read) -> Result<Self> {
149        let name = String::read_ext(input, "name", true)?;
150        let error_code = i16::read(input)?;
151        let tagged_fields_callback = |tag: i32, _: &[u8]| {
152            match tag {
153                _ => Ok(false)
154            }
155        };
156        let _unknown_tagged_fields = read_tagged_fields(input, tagged_fields_callback)?;
157        Ok(DeletableTopicResult {
158            name, error_code, _unknown_tagged_fields
159        })
160    }
161}
162
163impl Writable for DeletableTopicResult {
164    fn write(&self, #[allow(unused)] output: &mut impl Write) -> Result<()> {
165        self.name.write_ext(output, "self.name", true)?;
166        self.error_code.write(output)?;
167        write_tagged_fields(output, &[], &self._unknown_tagged_fields)?;
168        Ok(())
169    }
170}
171
172#[cfg(test)]
173mod tests {
174    use super::*;
175    use proptest::prelude::*;
176    
177    #[test]
178    fn test_java_default() {
179        crate::test_utils::test_java_default::<DeleteTopicsResponse>("DeleteTopicsResponse", 4);
180    }
181    
182    proptest! {
183        #[test]
184        fn test_serde(data: DeleteTopicsResponse) {
185            crate::test_utils::test_serde(&data)?;
186        }
187    }
188    
189    proptest! {
190        #[test]
191        fn test_java_arbitrary(data: DeleteTopicsResponse) {
192            crate::test_utils::test_java_arbitrary(&data, "DeleteTopicsResponse", 4);
193        }
194    }
195}