From 1ac9ce5a7e7ad91af1ebfa990fc94857ccf6d096 Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Sun, 14 Sep 2025 15:13:05 +0800 Subject: Add error.rs --- crates/utils/tcp_connection/src/target.rs | 80 ++++++++++++++++++++++++++++++- 1 file changed, 79 insertions(+), 1 deletion(-) (limited to 'crates/utils/tcp_connection/src/target.rs') diff --git a/crates/utils/tcp_connection/src/target.rs b/crates/utils/tcp_connection/src/target.rs index 84c9029..2b82e7e 100644 --- a/crates/utils/tcp_connection/src/target.rs +++ b/crates/utils/tcp_connection/src/target.rs @@ -1,4 +1,5 @@ use crate::handle::{ClientHandle, ServerHandle}; +use crate::target_configure::{ClientTargetConfig, ServerTargetConfig}; use std::fmt::{Display, Formatter}; use std::net::{AddrParseError, IpAddr, Ipv4Addr, SocketAddr}; use std::str::FromStr; @@ -6,7 +7,7 @@ use tokio::net::lookup_host; const DEFAULT_PORT: u16 = 8080; -#[derive(Debug, Eq, PartialEq)] +#[derive(Debug)] pub struct TcpServerTarget where Client: ClientHandle, @@ -18,6 +19,12 @@ where /// Server Handle server_handle: Option, + /// Client Config + client_cfg: Option, + + /// Server Config + server_cfg: Option, + /// Server port port: u16, @@ -34,6 +41,8 @@ where Self { client_handle: None, server_handle: None, + client_cfg: None, + server_cfg: None, port: DEFAULT_PORT, bind_addr: IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), } @@ -106,6 +115,75 @@ where Err(e) => Err(e), } } + + /// Set client handle + pub fn client(mut self, handle: Client) -> Self { + self.client_handle = Some(handle); + self + } + + /// Set server handle + pub fn server(mut self, handle: Server) -> Self { + self.server_handle = Some(handle); + self + } + + /// Set client config + pub fn client_cfg(mut self, config: ClientTargetConfig) -> Self { + self.client_cfg = Some(config); + self + } + + /// Set server config + pub fn server_cfg(mut self, config: ServerTargetConfig) -> Self { + self.server_cfg = Some(config); + self + } + + /// Add client handle + pub fn add_client_handle(&mut self, client: Client) { + self.client_handle = Some(client); + } + + /// Add server handle + pub fn add_server_handle(&mut self, server: Server) { + self.server_handle = Some(server); + } + + /// Add client config + pub fn add_client_cfg(&mut self, config: ClientTargetConfig) { + self.client_cfg = Some(config); + } + + /// Add server config + pub fn add_server_cfg(&mut self, config: ServerTargetConfig) { + self.server_cfg = Some(config); + } + + /// Get client handle ref + pub fn get_client(&self) -> Option<&Client> { + self.client_handle.as_ref() + } + + /// Get server handle ref + pub fn get_server(&self) -> Option<&Server> { + self.server_handle.as_ref() + } + + /// Get client config ref + pub fn get_client_cfg(&self) -> Option<&ClientTargetConfig> { + self.client_cfg.as_ref() + } + + /// Get server config ref + pub fn get_server_cfg(&self) -> Option<&ServerTargetConfig> { + self.server_cfg.as_ref() + } + + /// Get SocketAddr of TcpServerTarget + pub fn get_addr(&self) -> SocketAddr { + SocketAddr::new(self.bind_addr, self.port) + } } /// Parse Domain Name to IpAddr via DNS -- cgit