kafka_wire_protocol/schema/delete_topics_response/
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, 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#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
16#[cfg_attr(test, derive(Arbitrary))]
17pub struct DeleteTopicsResponse {
18 pub throttle_time_ms: i32,
20 #[cfg_attr(test, proptest(strategy = "proptest_strategies::vec()"))]
22 pub responses: Vec<DeletableTopicResult>,
23 #[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#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
101#[cfg_attr(test, derive(Arbitrary))]
102pub struct DeletableTopicResult {
103 #[cfg_attr(test, proptest(strategy = "proptest_strategies::string()"))]
105 pub name: String,
106 pub error_code: i16,
108 #[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}