start type socket parametrization
This commit is contained in:
		
							parent
							
								
									6530d7b64a
								
							
						
					
					
						commit
						e0a9fe3678
					
				| @ -8,6 +8,7 @@ minecraft_proxy_sources = [ | |||||||
|   'server_conf/mod.rs', |   'server_conf/mod.rs', | ||||||
|   'server_conf/server.rs', |   'server_conf/server.rs', | ||||||
|   'server_conf/conexion.rs', |   'server_conf/conexion.rs', | ||||||
|  |   'server_conf/listener.rs', | ||||||
|   'server_proxy.rs', |   'server_proxy.rs', | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,5 +1,3 @@ | |||||||
| use std::net::{TcpListener, TcpStream}; |  | ||||||
| use std::os::unix::net::{UnixStream}; |  | ||||||
| use std::io::prelude::*; | use std::io::prelude::*; | ||||||
| use crate::conf; | use crate::conf; | ||||||
| use std::sync::{Arc, RwLock}; | use std::sync::{Arc, RwLock}; | ||||||
| @ -14,16 +12,15 @@ const RE_MOD: u8 = 1; | |||||||
| const RE_OK: u8 = 0; | const RE_OK: u8 = 0; | ||||||
| const RE_KO: u8 = 1; | const RE_KO: u8 = 1; | ||||||
| 
 | 
 | ||||||
| 
 | pub struct Conexion<TSocket: Read + Write> { | ||||||
| pub struct Conexion { |  | ||||||
|     conf: Arc<RwLock<conf::Config>>, |     conf: Arc<RwLock<conf::Config>>, | ||||||
|     stream: UnixStream, |     stream: TSocket, | ||||||
|     buf:[u8; 256], |     buf:[u8; 256], | ||||||
|     exit: bool, |     exit: bool, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl Conexion { | impl<TSocket: Read + Write> Conexion<TSocket> { | ||||||
|     pub fn new(conf: Arc<RwLock<conf::Config>>, stream: UnixStream) -> Self { |     pub fn new(conf: Arc<RwLock<conf::Config>>, stream: TSocket) -> Self { | ||||||
|         Self{ |         Self{ | ||||||
|                     conf: conf, |                     conf: conf, | ||||||
|                     stream: stream, |                     stream: stream, | ||||||
|  | |||||||
							
								
								
									
										60
									
								
								src/server_conf/listener.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								src/server_conf/listener.rs
									
									
									
									
									
										Normal file
									
								
							| @ -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<TcpListener>, | ||||||
|  |     unix_lis : Option<UnixListener>, | ||||||
|  |     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<Self, String>{ | ||||||
|  |         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<Item = Result<TcpStream, Error>> {
 | ||||||
|  |         match self.type_lis { | ||||||
|  |             TCP_LIS => self.tcp_lis.unwrap().incoming(), | ||||||
|  |             UNIX_LIS => self.unix_lis.unwrap().incoming(), | ||||||
|  |         } | ||||||
|  |     }*/ | ||||||
|  | 
 | ||||||
|  |     /*pub fn accept(&self) -> Result<dyn NewTrait, Error> {
 | ||||||
|  |         match self.type_lis { | ||||||
|  |             TCP_LIS => self.tcp_lis.unwrap().accept(), | ||||||
|  |             UNIX_LIS => self.unix_lis.unwrap().accept(), | ||||||
|  |         } | ||||||
|  |     }*/ | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
| @ -1,2 +1,3 @@ | |||||||
| pub mod server; | pub mod server; | ||||||
| pub mod conexion; | pub mod conexion; | ||||||
|  | pub mod listener; | ||||||
|  | |||||||
| @ -1,10 +1,10 @@ | |||||||
| use std::net::{TcpListener, TcpStream}; | use std::net::TcpListener; | ||||||
| use std::os::unix::net::{UnixListener}; | use std::os::unix::net::UnixListener; | ||||||
| use crate::conf; | use crate::conf; | ||||||
| use crate::server_conf::conexion::Conexion; | use crate::server_conf::conexion::Conexion; | ||||||
|  | use crate::server_conf::listener::GenericListener; | ||||||
| use std::thread; | use std::thread; | ||||||
| use std::sync::{Arc, RwLock}; | use std::sync::{Arc, RwLock}; | ||||||
| use std::path::{Path, PathBuf}; |  | ||||||
| 
 | 
 | ||||||
| pub struct ConfSer{ | pub struct ConfSer{ | ||||||
|     path: String, |     path: String, | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user