Skip to content

Commit 78f1621

Browse files
committed
feat: v2.3.0
1 parent 4a296d1 commit 78f1621

File tree

20 files changed

+230
-1
lines changed

20 files changed

+230
-1
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "tcp-request"
3-
version = "2.2.10"
3+
version = "2.3.0"
44
edition = "2024"
55
authors = ["root@ltpp.vip"]
66
license = "MIT"

src/common/const.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,17 @@
1+
/// Empty string constant.
12
pub const EMPTY_STR: &str = "";
3+
4+
/// Default web port number.
25
pub const DEFAULT_WEB_PORT: usize = 80;
6+
7+
/// Request split marker string.
38
pub const SPLIT_REQUEST: &str = "\r\n\r\n";
9+
10+
/// Request split marker bytes.
411
pub const SPLIT_REQUEST_BYTES: &[u8] = SPLIT_REQUEST.as_bytes();
12+
13+
/// Default buffer size for requests.
514
pub const DEFAULT_BUFFER_SIZE: usize = 512_000;
15+
16+
/// Default timeout value (maximum possible u64 value).
617
pub const DEFAULT_TIMEOUT: u64 = u64::MAX;

src/common/type.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
use crate::*;
22

3+
/// Thread-safe reference-counted read-write lock wrapper.
34
pub type ArcRwLock<T> = Arc<RwLock<T>>;

src/lib.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
//! tcp-request
2+
//!
3+
//! A Rust library for sending raw TCP requests, with features
4+
//! for handling responses, managing redirects, and working
5+
//! with compressed data over TCP connections.
6+
17
#[cfg(test)]
28
mod cfg;
39
pub(crate) mod common;

src/request/config/impl.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
use crate::*;
22

3+
/// Default implementation for Config.
34
impl Default for Config {
5+
/// Creates a default configuration instance.
6+
///
7+
/// # Returns
8+
///
9+
/// - `Config` - A new Config instance with default values.
410
fn default() -> Self {
511
Self {
612
timeout: DEFAULT_TIMEOUT,

src/request/config/struct.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
use crate::*;
22

3+
/// Configuration for TCP request settings.
34
#[derive(Debug, Clone, PartialEq, Eq)]
45
pub(crate) struct Config {
6+
/// Target host address.
57
pub(crate) host: String,
8+
/// Target port number.
69
pub(crate) port: usize,
10+
/// Request timeout in seconds.
711
pub(crate) timeout: u64,
12+
/// Buffer size for data transfer.
813
pub(crate) buffer_size: usize,
914
}

src/request/error/enum.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
1+
/// Error types for request operations.
12
#[derive(Debug)]
23
pub enum RequestError {
4+
/// Invalid URL provided.
35
InvalidUrl,
6+
/// Failed to establish TCP connection.
47
TcpStreamConnectError,
8+
/// General request error.
59
RequestError,
10+
/// Error reading from connection.
611
ReadConnectionError,
12+
/// Failed to set read timeout.
713
SetReadTimeoutError,
14+
/// Failed to set write timeout.
815
SetWriteTimeoutError,
16+
/// Error reading response.
917
ReadResponseError,
1018
}

src/request/error/impl.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,19 @@
11
use crate::*;
22

3+
/// Standard error implementation for RequestError.
34
impl StdError for RequestError {}
45

6+
/// Display formatting implementation for RequestError.
57
impl Display for RequestError {
8+
/// Formats the error for display.
9+
///
10+
/// # Arguments
11+
///
12+
/// - `&mut fmt::Formatter<'_>` - The formatter to write to.
13+
///
14+
/// # Returns
15+
///
16+
/// - `fmt::Result` - The result of the formatting operation.
617
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
718
match self {
819
Self::InvalidUrl => write!(f, "Invalid URL"),

src/request/request/impl.rs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,17 @@
11
use crate::*;
22

3+
/// Implementation of TCP request operations.
34
impl TcpRequest {
5+
/// Sends data through the TCP connection.
6+
///
7+
/// # Arguments
8+
///
9+
/// - `&mut TcpStream` - The TCP stream to send data through.
10+
/// - `&[u8]` - The data to be sent.
11+
///
12+
/// # Returns
13+
///
14+
/// - `Result<BoxResponseTrait, RequestError>` - The response or error.
415
fn send_request(
516
&mut self,
617
stream: &mut TcpStream,
@@ -15,6 +26,15 @@ impl TcpRequest {
1526
self.read_response(stream)
1627
}
1728

29+
/// Reads response from the TCP connection.
30+
///
31+
/// # Arguments
32+
///
33+
/// - `&mut TcpStream` - The TCP stream to read from.
34+
///
35+
/// # Returns
36+
///
37+
/// - `Result<BoxResponseTrait, RequestError>` - The response or error.
1838
fn read_response(&mut self, stream: &mut TcpStream) -> Result<BoxResponseTrait, RequestError> {
1939
let cfg_buffer_size: usize = self
2040
.config
@@ -36,6 +56,16 @@ impl TcpRequest {
3656
));
3757
}
3858

59+
/// Establishes a TCP connection to the specified host and port.
60+
///
61+
/// # Arguments
62+
///
63+
/// - `String` - The host address to connect to.
64+
/// - `usize` - The port number to connect to.
65+
///
66+
/// # Returns
67+
///
68+
/// - `Result<TcpStream, RequestError>` - The TCP stream or error.
3969
fn get_connection_stream(&self, host: String, port: usize) -> Result<TcpStream, RequestError> {
4070
let host_port: (String, u16) = (host.clone(), port as u16);
4171
let cfg_timeout: u64 = self
@@ -56,9 +86,19 @@ impl TcpRequest {
5686
}
5787
}
5888

89+
/// RequestTrait implementation for TcpRequest.
5990
impl RequestTrait for TcpRequest {
6091
type RequestResult = RequestResult;
6192

93+
/// Sends data through the TCP request.
94+
///
95+
/// # Arguments
96+
///
97+
/// - `&[u8]` - The data to be sent.
98+
///
99+
/// # Returns
100+
///
101+
/// - `RequestResult` - The result of the send operation.
62102
fn send(&mut self, data: &[u8]) -> Self::RequestResult {
63103
let cfg_timeout: Config = self
64104
.config
@@ -74,7 +114,13 @@ impl RequestTrait for TcpRequest {
74114
}
75115
}
76116

117+
/// Default implementation for TcpRequest.
77118
impl Default for TcpRequest {
119+
/// Creates a default TcpRequest instance.
120+
///
121+
/// # Returns
122+
///
123+
/// - `TcpRequest` - A new TcpRequest instance with default configuration.
78124
fn default() -> Self {
79125
Self {
80126
config: Arc::new(RwLock::new(Config::default())),

src/request/request/struct.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
use crate::*;
22

3+
/// TCP request structure containing configuration and response data.
34
#[derive(Debug, Clone)]
45
pub struct TcpRequest {
6+
/// Thread-safe configuration for the request.
57
pub(crate) config: ArcRwLock<Config>,
8+
/// Thread-safe binary response storage.
69
pub(crate) response: ArcRwLock<TcpResponseBinary>,
710
}

0 commit comments

Comments
 (0)