kafka_wire_protocol/schema/init_producer_id_request/
v0.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::markers::{ApiMessage, Request};
9use crate::readable_writable::{Readable, Writable};
10#[cfg(test)] use crate::test_utils::proptest_strategies;
11
12/// InitProducerIdRequest, version 0.
13#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
14#[cfg_attr(test, derive(Arbitrary))]
15pub struct InitProducerIdRequest {
16    /// The transactional id, or null if the producer is not transactional.
17    #[cfg_attr(test, proptest(strategy = "proptest_strategies::optional_string()"))]
18    pub transactional_id: Option<String>,
19    /// The time in ms to wait before aborting idle transactions sent by this producer. This is only relevant if a TransactionalId has been defined.
20    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}