tcp_request/request/request_builder/impl.rs
1use crate::*;
2
3/// Default implementation for RequestBuilder.
4impl Default for RequestBuilder {
5 /// Creates a default RequestBuilder instance.
6 ///
7 /// # Returns
8 ///
9 /// - `RequestBuilder` - A new RequestBuilder with default configuration.
10 fn default() -> Self {
11 Self {
12 tcp_request: TcpRequest::default(),
13 builder: TcpRequest::default(),
14 }
15 }
16}
17
18/// Implementation for RequestBuilder methods.
19impl RequestBuilder {
20 /// Creates a new RequestBuilder instance.
21 ///
22 /// # Returns
23 ///
24 /// - `RequestBuilder` - A new RequestBuilder with default configuration.
25 pub fn new() -> Self {
26 Self::default()
27 }
28
29 /// Sets the target host for the request.
30 ///
31 /// # Arguments
32 ///
33 /// - `T` - The host address (any type that implements Into<String>).
34 ///
35 /// # Returns
36 ///
37 /// - `&mut Self` - The builder for method chaining.
38 pub fn host<T>(&mut self, host: T) -> &mut Self
39 where
40 T: Into<String>,
41 {
42 let _ = self.tcp_request.config.write().and_then(|mut data| {
43 data.host = host.into();
44 Ok(())
45 });
46 self
47 }
48
49 /// Sets the target port for the request.
50 ///
51 /// # Arguments
52 ///
53 /// - `usize` - The port number.
54 ///
55 /// # Returns
56 ///
57 /// - `&mut Self` - The builder for method chaining.
58 pub fn port(&mut self, port: usize) -> &mut Self {
59 let _ = self.tcp_request.config.write().and_then(|mut data| {
60 data.port = port;
61 Ok(())
62 });
63 self
64 }
65
66 /// Sets the buffer size for the request.
67 ///
68 /// # Arguments
69 ///
70 /// - `usize` - The buffer size in bytes.
71 ///
72 /// # Returns
73 ///
74 /// - `&mut Self` - The builder for method chaining.
75 pub fn buffer(&mut self, buffer_size: usize) -> &mut Self {
76 let _ = self.tcp_request.config.write().and_then(|mut data| {
77 data.buffer_size = buffer_size;
78 Ok(())
79 });
80 self
81 }
82
83 /// Sets the timeout for the request in milliseconds.
84 ///
85 /// # Arguments
86 ///
87 /// - `u64` - The timeout duration in milliseconds.
88 ///
89 /// # Returns
90 ///
91 /// - `&mut Self` - The builder for method chaining.
92 pub fn timeout(&mut self, timeout: u64) -> &mut Self {
93 let _ = self.tcp_request.config.write().and_then(|mut data| {
94 data.timeout = timeout;
95 Ok(())
96 });
97 self
98 }
99
100 /// Builds and returns the configured request.
101 ///
102 /// # Returns
103 ///
104 /// - `BoxRequestTrait` - A boxed request trait object ready for use.
105 pub fn build(&mut self) -> BoxRequestTrait {
106 self.builder = self.tcp_request.clone();
107 self.tcp_request = TcpRequest::default();
108 Box::new(self.builder.clone())
109 }
110}