kafka_wire_protocol/schema/init_producer_id_request/
v0.rs1use std::io::{Read, Result, Write};
4
5use serde::{Deserialize, Serialize};
6#[cfg(test)] use proptest_derive::Arbitrary;
7
8use crate::markers::{ApiMessage, Request};
9use crate::readable_writable::{Readable, Writable};
10#[cfg(test)] use crate::test_utils::proptest_strategies;
11
12#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
14#[cfg_attr(test, derive(Arbitrary))]
15pub struct InitProducerIdRequest {
16 #[cfg_attr(test, proptest(strategy = "proptest_strategies::optional_string()"))]
18 pub transactional_id: Option<String>,
19 pub transaction_timeout_ms: i32,
21}
22
23impl ApiMessage for InitProducerIdRequest {
24 fn api_key(&self) -> i16 {
25 22
26 }
27
28 fn version(&self) -> i16 {
29 0
30 }
31}
32
33impl Request for InitProducerIdRequest { }
34
35impl Default for InitProducerIdRequest {
36 fn default() -> Self {
37 InitProducerIdRequest {
38 transactional_id: Some(String::from("")),
39 transaction_timeout_ms: 0_i32,
40 }
41 }
42}
43
44impl InitProducerIdRequest {
45 pub fn new<S1: AsRef<str>>(transactional_id: Option<S1>, transaction_timeout_ms: i32) -> Self {
46 Self {
47 transactional_id: transactional_id.map(|s| s.as_ref().to_string()),
48 transaction_timeout_ms,
49 }
50 }
51}
52
53#[cfg(test)]
54mod tests_init_producer_id_request_new_and_default {
55 use super::*;
56
57 #[test]
58 fn test() {
59 let d = InitProducerIdRequest::new(
60 Some(String::from("")),
61 0_i32,
62 );
63 assert_eq!(d, InitProducerIdRequest::default());
64 }
65}
66
67impl Readable for InitProducerIdRequest {
68 fn read(#[allow(unused)] input: &mut impl Read) -> Result<Self> {
69 let transactional_id = Option::<String>::read_ext(input, "transactional_id", false)?;
70 let transaction_timeout_ms = i32::read(input)?;
71 Ok(InitProducerIdRequest {
72 transactional_id, transaction_timeout_ms
73 })
74 }
75}
76
77impl Writable for InitProducerIdRequest {
78 fn write(&self, #[allow(unused)] output: &mut impl Write) -> Result<()> {
79 self.transactional_id.write_ext(output, "self.transactional_id", false)?;
80 self.transaction_timeout_ms.write(output)?;
81 Ok(())
82 }
83}
84
85#[cfg(test)]
86mod tests {
87 use super::*;
88 use proptest::prelude::*;
89
90 #[test]
91 fn test_java_default() {
92 crate::test_utils::test_java_default::<InitProducerIdRequest>("InitProducerIdRequest", 0);
93 }
94
95 proptest! {
96 #[test]
97 fn test_serde(data: InitProducerIdRequest) {
98 crate::test_utils::test_serde(&data)?;
99 }
100 }
101
102 proptest! {
103 #[test]
104 fn test_java_arbitrary(data: InitProducerIdRequest) {
105 crate::test_utils::test_java_arbitrary(&data, "InitProducerIdRequest", 0);
106 }
107 }
108}