kafka_wire_protocol/schema/request_header/
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::markers::{ApiMessage, Header};
9use crate::readable_writable::{Readable, Writable};
10#[cfg(test)] use crate::test_utils::proptest_strategies;
11
12/// RequestHeader, version 1.
13#[derive(Serialize, Deserialize, PartialEq, Debug, Clone)]
14#[cfg_attr(test, derive(Arbitrary))]
15pub struct RequestHeader {
16    /// The API key of this request.
17    pub request_api_key: i16,
18    /// The API version of this request.
19    pub request_api_version: i16,
20    /// The correlation ID of this request.
21    pub correlation_id: i32,
22    /// The client ID string.
23    #[cfg_attr(test, proptest(strategy = "proptest_strategies::optional_string()"))]
24    pub client_id: Option<String>,
25}
26
27impl ApiMessage for RequestHeader {
28    fn api_key(&self) -> i16 {
29        -1
30    }
31    
32    fn version(&self) -> i16 {
33        1
34    }
35}
36
37impl Header for RequestHeader { }
38
39impl Default for RequestHeader {
40    fn default() -> Self {
41        RequestHeader {
42            request_api_key: 0_i16,
43            request_api_version: 0_i16,
44            correlation_id: 0_i32,
45            client_id: Some(String::from("")),
46        }
47    }
48}
49
50impl RequestHeader {
51    pub fn new<S1: AsRef<str>>(request_api_key: i16, request_api_version: i16, correlation_id: i32, client_id: Option<S1>) -> Self {
52        Self {
53            request_api_key,
54            request_api_version,
55            correlation_id,
56            client_id: client_id.map(|s| s.as_ref().to_string()),
57        }
58    }
59}
60
61#[cfg(test)]
62mod tests_request_header_new_and_default {
63    use super::*;
64    
65    #[test]
66    fn test() {
67        let d = RequestHeader::new(
68            0_i16,
69            0_i16,
70            0_i32,
71            Some(String::from("")),
72        );
73        assert_eq!(d, RequestHeader::default());
74    }
75}
76
77impl Readable for RequestHeader {
78    fn read(#[allow(unused)] input: &mut impl Read) -> Result<Self> {
79        let request_api_key = i16::read(input)?;
80        let request_api_version = i16::read(input)?;
81        let correlation_id = i32::read(input)?;
82        let client_id = Option::<String>::read_ext(input, "client_id", false)?;
83        Ok(RequestHeader {
84            request_api_key, request_api_version, correlation_id, client_id
85        })
86    }
87}
88
89impl Writable for RequestHeader {
90    fn write(&self, #[allow(unused)] output: &mut impl Write) -> Result<()> {
91        self.request_api_key.write(output)?;
92        self.request_api_version.write(output)?;
93        self.correlation_id.write(output)?;
94        self.client_id.write_ext(output, "self.client_id", false)?;
95        Ok(())
96    }
97}
98
99#[cfg(test)]
100mod tests {
101    use super::*;
102    use proptest::prelude::*;
103    
104    #[test]
105    fn test_java_default() {
106        crate::test_utils::test_java_default::<RequestHeader>("RequestHeader", 1);
107    }
108    
109    proptest! {
110        #[test]
111        fn test_serde(data: RequestHeader) {
112            crate::test_utils::test_serde(&data)?;
113        }
114    }
115    
116    proptest! {
117        #[test]
118        fn test_java_arbitrary(data: RequestHeader) {
119            crate::test_utils::test_java_arbitrary(&data, "RequestHeader", 1);
120        }
121    }
122}