44 lines
1009 B
Rust

use crate::conf;
use crate::server_conf::conexion::Conexion;
use crate::server_conf::listener::GenericListener;
use std::thread;
use std::sync::{Arc, RwLock};
pub struct ConfSer{
path: String,
listener: GenericListener,
}
impl ConfSer {
fn new(path: String) -> ConfSer{
ConfSer{
path: path.clone(),
listener: GenericListener::bind(path, 1).unwrap(),
}
}
}
impl Drop for ConfSer {
fn drop(&mut self) {
// There's no way to return a useful error here
let _ = std::fs::remove_file(self.path.clone()).unwrap();
println!("> Dropping {}", self.path);
}
}
pub fn start(conf: Arc<RwLock<conf::Config>>){
let ser = ConfSer::new(String::from("mineproxy"));
loop{
match ser.listener.accept() {
Ok(stream) => {
let c = conf.clone();
thread::spawn(|| Conexion::new(c, stream).process_reques());
}
Err(e) => println!("{}", e)
}
}
}