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