Skip to content

Commit 80beb55

Browse files
committed
feat: v0.3.0
1 parent 90cef35 commit 80beb55

File tree

12 files changed

+140
-1
lines changed

12 files changed

+140
-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 = "udp-request"
3-
version = "0.2.10"
3+
version = "0.3.0"
44
edition = "2024"
55
authors = ["root@ltpp.vip"]
66
license = "MIT"

src/lib.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
//! udp-request
2+
//!
3+
//! A simple UDP request library for sending and receiving UDP packets,
4+
//! designed to handle network communication in Rust applications.
5+
16
#[cfg(test)]
27
mod cfg;
38
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 Config instance.
6+
///
7+
/// # Returns
8+
///
9+
/// - `Config` - Default configuration with empty host, default port, timeout and buffer size.
410
fn default() -> Self {
511
Self {
612
timeout: DEFAULT_TIMEOUT,

src/request/config/struct.rs

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

3+
/// Configuration for UDP request.
4+
///
5+
/// Contains network settings and timeout configurations.
36
#[derive(Debug, Clone, PartialEq, Eq)]
47
pub struct Config {
8+
/// Remote host address.
59
pub(crate) host: String,
10+
/// Remote port number.
611
pub(crate) port: usize,
12+
/// Request timeout in milliseconds.
713
pub(crate) timeout: u64,
14+
/// Buffer size for receiving data.
815
pub(crate) buffer_size: usize,
916
}

src/request/error/enum.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,22 @@
1+
/// Error types for UDP requests.
12
#[derive(Debug)]
23
pub enum RequestError {
4+
/// Invalid URL format.
35
InvalidUrl,
6+
/// Failed to create UDP socket.
47
UdpSocketCreateError,
8+
/// Failed to connect UDP socket.
59
UdpSocketConnectError,
10+
/// General request error.
611
RequestError,
12+
/// Failed to read from connection.
713
ReadConnectionError,
14+
/// Failed to set read timeout.
815
SetReadTimeoutError,
16+
/// Failed to set write timeout.
917
SetWriteTimeoutError,
18+
/// Failed to read response.
1019
ReadResponseError,
20+
/// Failed to send response with error message.
1121
SendResponseError(String),
1222
}

src/request/request/impl.rs

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

3+
/// Default implementation for UdpRequest.
34
impl Default for UdpRequest {
5+
/// Creates a default UdpRequest instance.
6+
///
7+
/// # Returns
8+
///
9+
/// - `UdpRequest` - Default request with default config and empty response.
410
fn default() -> Self {
511
Self {
612
config: Arc::new(RwLock::new(Config::default())),
@@ -10,6 +16,16 @@ impl Default for UdpRequest {
1016
}
1117

1218
impl UdpRequest {
19+
/// Sends UDP request data through socket.
20+
///
21+
/// # Arguments
22+
///
23+
/// - `&mut UdpSocket` - UDP socket for communication.
24+
/// - `&[u8]` - Data to send.
25+
///
26+
/// # Returns
27+
///
28+
/// - `Result<BoxResponseTrait, RequestError>` - Response or error.
1329
fn send_request(
1430
&mut self,
1531
socket: &mut UdpSocket,
@@ -21,6 +37,15 @@ impl UdpRequest {
2137
self.read_response(socket)
2238
}
2339

40+
/// Reads response from UDP socket.
41+
///
42+
/// # Arguments
43+
///
44+
/// - `&mut UdpSocket` - UDP socket for communication.
45+
///
46+
/// # Returns
47+
///
48+
/// - `Result<BoxResponseTrait, RequestError>` - Response or error.
2449
fn read_response(&mut self, socket: &mut UdpSocket) -> Result<BoxResponseTrait, RequestError> {
2550
let cfg_buffer_size: usize = self
2651
.config
@@ -39,6 +64,16 @@ impl UdpRequest {
3964
));
4065
}
4166

67+
/// Creates and configures UDP socket for connection.
68+
///
69+
/// # Arguments
70+
///
71+
/// - `String` - Host address.
72+
/// - `usize` - Port number.
73+
///
74+
/// # Returns
75+
///
76+
/// - `Result<UdpSocket, RequestError>` - Configured socket or error.
4277
fn get_connection_socket(&self, host: String, port: usize) -> Result<UdpSocket, RequestError> {
4378
let host_port: String = format!("{}:{}", host.clone(), port);
4479
let cfg_timeout: u64 = self
@@ -62,9 +97,19 @@ impl UdpRequest {
6297
}
6398
}
6499

100+
/// RequestTrait implementation for UdpRequest.
65101
impl RequestTrait for UdpRequest {
66102
type RequestResult = RequestResult;
67103

104+
/// Sends UDP request with given data.
105+
///
106+
/// # Arguments
107+
///
108+
/// - `&[u8]` - Data to send.
109+
///
110+
/// # Returns
111+
///
112+
/// - `RequestResult` - Response or error.
68113
fn send(&mut self, data: &[u8]) -> Self::RequestResult {
69114
let cfg_timeout: Config = self
70115
.config

src/request/trait.rs

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

3+
/// Trait for UDP request operations.
34
pub trait RequestTrait: Send + Debug {
5+
/// Associated result type for request operations.
46
type RequestResult: Sized;
57

8+
/// Sends data through the request.
9+
///
10+
/// # Arguments
11+
///
12+
/// - `&[u8]` - Data to send.
13+
///
14+
/// # Returns
15+
///
16+
/// - `Self::RequestResult` - Result of the send operation.
617
fn send(&mut self, data: &[u8]) -> Self::RequestResult;
718
}

src/request/type.rs

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

3+
/// Result type for UDP requests.
4+
///
5+
/// Contains either a boxed response trait object or request error.
36
pub type RequestResult = Result<BoxResponseTrait, RequestError>;
7+
8+
/// Boxed trait object for UDP request.
9+
///
10+
/// Used to store different request implementations.
411
pub type BoxRequestTrait = Box<dyn RequestTrait<RequestResult = RequestResult>>;

src/response/response_binary/impl.rs

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

3+
/// ResponseTrait implementation for binary UDP response.
34
impl ResponseTrait for UdpResponseBinary {
45
type OutputText = UdpResponseText;
56
type OutputBinary = UdpResponseBinary;
67

8+
/// Creates UdpResponseBinary from byte slice.
9+
///
10+
/// # Arguments
11+
///
12+
/// - `&[u8]` - Response data.
13+
///
14+
/// # Returns
15+
///
16+
/// - `Self` - New binary response instance.
717
fn from(response: &[u8]) -> Self
818
where
919
Self: Sized,
1020
{
1121
response.to_vec()
1222
}
1323

24+
/// Gets binary representation of response.
25+
///
26+
/// # Returns
27+
///
28+
/// - `Self::OutputBinary` - Binary response data.
1429
fn binary(&self) -> Self::OutputBinary {
1530
self.clone()
1631
}
1732

33+
/// Converts binary response to text representation.
34+
///
35+
/// # Returns
36+
///
37+
/// - `UdpResponseText` - Text response data.
1838
fn text(&self) -> UdpResponseText {
1939
let data: String = String::from_utf8_lossy(&self).to_string();
2040
data
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
1+
/// Binary response type for UDP operations.
2+
///
3+
/// Represents raw binary data received from UDP requests.
14
pub type UdpResponseBinary = Vec<u8>;

0 commit comments

Comments
 (0)