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/server.rs',
|
||||
'server_conf/conexion.rs',
|
||||
'server_conf/listener.rs',
|
||||
'server_proxy.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<TSocket: Read + Write> {
|
||||
conf: Arc<RwLock<conf::Config>>,
|
||||
stream: UnixStream,
|
||||
stream: TSocket,
|
||||
buf:[u8; 256],
|
||||
exit: bool,
|
||||
}
|
||||
|
||||
impl Conexion {
|
||||
pub fn new(conf: Arc<RwLock<conf::Config>>, stream: UnixStream) -> Self {
|
||||
impl<TSocket: Read + Write> Conexion<TSocket> {
|
||||
pub fn new(conf: Arc<RwLock<conf::Config>>, stream: TSocket) -> Self {
|
||||
Self{
|
||||
conf: conf,
|
||||
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 conexion;
|
||||
pub mod listener;
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user