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…
Reference in New Issue
Block a user