From e0a9fe36783e7191abc9281a5eb9c4d005d3f003 Mon Sep 17 00:00:00 2001 From: groche97 Date: Mon, 19 Dec 2022 23:56:34 +0100 Subject: [PATCH] start type socket parametrization --- src/meson.build | 1 + src/server_conf/conexion.rs | 11 +++---- src/server_conf/listener.rs | 60 +++++++++++++++++++++++++++++++++++++ src/server_conf/mod.rs | 1 + src/server_conf/server.rs | 6 ++-- 5 files changed, 69 insertions(+), 10 deletions(-) create mode 100644 src/server_conf/listener.rs diff --git a/src/meson.build b/src/meson.build index 460cb9f..8bcfb17 100644 --- a/src/meson.build +++ b/src/meson.build @@ -8,6 +8,7 @@ minecraft_proxy_sources = [ 'server_conf/mod.rs', 'server_conf/server.rs', 'server_conf/conexion.rs', + 'server_conf/listener.rs', 'server_proxy.rs', ] diff --git a/src/server_conf/conexion.rs b/src/server_conf/conexion.rs index f3f785a..767be08 100644 --- a/src/server_conf/conexion.rs +++ b/src/server_conf/conexion.rs @@ -1,5 +1,3 @@ -use std::net::{TcpListener, TcpStream}; -use std::os::unix::net::{UnixStream}; use std::io::prelude::*; use crate::conf; use std::sync::{Arc, RwLock}; @@ -14,16 +12,15 @@ const RE_MOD: u8 = 1; const RE_OK: u8 = 0; const RE_KO: u8 = 1; - -pub struct Conexion { +pub struct Conexion { conf: Arc>, - stream: UnixStream, + stream: TSocket, buf:[u8; 256], exit: bool, } -impl Conexion { - pub fn new(conf: Arc>, stream: UnixStream) -> Self { +impl Conexion { + pub fn new(conf: Arc>, stream: TSocket) -> Self { Self{ conf: conf, stream: stream, diff --git a/src/server_conf/listener.rs b/src/server_conf/listener.rs new file mode 100644 index 0000000..47bdc68 --- /dev/null +++ b/src/server_conf/listener.rs @@ -0,0 +1,60 @@ +use std::net::TcpListener; +use std::os::unix::net::UnixListener; +use std::io::Error; +use std::io::prelude::*; + +pub const TCP_LIS : u8 = 0; +pub const UNIX_LIS : u8 = 1; + +trait NewTrait: std::io::Read + std::io::Write {} + +pub struct GenericListener { + tcp_lis : Option, + unix_lis : Option, + type_lis : u8, +} + +impl GenericListener { + fn new_tcp(listener: TcpListener) -> Self{ + GenericListener{ + tcp_lis: Some(listener), + unix_lis: None, + type_lis: TCP_LIS, + } + } + + fn new_unix(listener: UnixListener) -> Self{ + GenericListener{ + tcp_lis: None, + unix_lis: Some(listener), + type_lis: UNIX_LIS, + } + } + + pub fn bind(address: String, type_lis: u8) -> Result{ + let ret = match type_lis { + TCP_LIS => Self::new_tcp(TcpListener::bind(address).unwrap()), + UNIX_LIS => Self::new_unix(UnixListener::bind(address).unwrap()), + _ => return Err("No valid option".to_string()), + }; + Ok(ret) + } + + + + /*pub fn incoming(&self) -> dyn Iterator> { + match self.type_lis { + TCP_LIS => self.tcp_lis.unwrap().incoming(), + UNIX_LIS => self.unix_lis.unwrap().incoming(), + } + }*/ + + /*pub fn accept(&self) -> Result { + match self.type_lis { + TCP_LIS => self.tcp_lis.unwrap().accept(), + UNIX_LIS => self.unix_lis.unwrap().accept(), + } + }*/ + +} + diff --git a/src/server_conf/mod.rs b/src/server_conf/mod.rs index d4ed703..f4803bb 100644 --- a/src/server_conf/mod.rs +++ b/src/server_conf/mod.rs @@ -1,2 +1,3 @@ pub mod server; pub mod conexion; +pub mod listener; diff --git a/src/server_conf/server.rs b/src/server_conf/server.rs index 2ec5f30..d957e87 100644 --- a/src/server_conf/server.rs +++ b/src/server_conf/server.rs @@ -1,10 +1,10 @@ -use std::net::{TcpListener, TcpStream}; -use std::os::unix::net::{UnixListener}; +use std::net::TcpListener; +use std::os::unix::net::UnixListener; use crate::conf; use crate::server_conf::conexion::Conexion; +use crate::server_conf::listener::GenericListener; use std::thread; use std::sync::{Arc, RwLock}; -use std::path::{Path, PathBuf}; pub struct ConfSer{ path: String,