tcp_request/request/request_builder/
impl.rs

1use crate::*;
2
3impl Default for RequestBuilder {
4    #[inline]
5    fn default() -> Self {
6        Self {
7            tcp_request: TcpRequest::default(),
8            builder: TcpRequest::default(),
9        }
10    }
11}
12
13impl RequestBuilder {
14    #[inline]
15    pub fn new() -> Self {
16        Self::default()
17    }
18
19    #[inline]
20    pub fn host<T>(&mut self, host: T) -> &mut Self
21    where
22        T: Into<String>,
23    {
24        let _ = self
25            .tcp_request
26            .get_mut_config()
27            .write()
28            .and_then(|mut data| {
29                data.host = host.into();
30                Ok(())
31            });
32        self
33    }
34
35    #[inline]
36    pub fn port(&mut self, port: usize) -> &mut Self {
37        let _ = self
38            .tcp_request
39            .get_mut_config()
40            .write()
41            .and_then(|mut data| {
42                data.port = port;
43                Ok(())
44            });
45        self
46    }
47
48    #[inline]
49    pub fn data<T>(&mut self, data: T) -> &mut Self
50    where
51        T: Into<Vec<u8>>,
52    {
53        let mut data_clone: Vec<u8> = data.into();
54        data_clone.extend_from_slice(SPLIT_REQUEST_BYTES);
55        self.tcp_request.data = Arc::new(RwLock::new(data_clone));
56        self
57    }
58
59    #[inline]
60    pub fn buffer(&mut self, buffer_size: usize) -> &mut Self {
61        let _ = self
62            .tcp_request
63            .get_mut_config()
64            .write()
65            .and_then(|mut data| {
66                data.buffer_size = buffer_size;
67                Ok(())
68            });
69        self
70    }
71
72    #[inline]
73    pub fn timeout(&mut self, timeout: u64) -> &mut Self {
74        let _ = self
75            .tcp_request
76            .get_mut_config()
77            .write()
78            .and_then(|mut data| {
79                data.timeout = timeout;
80                Ok(())
81            });
82        self
83    }
84
85    #[inline]
86    pub fn build(&mut self) -> BoxRequestTrait {
87        self.builder = self.tcp_request.clone();
88        self.tcp_request = TcpRequest::default();
89        Box::new(self.builder.clone())
90    }
91}