use std::{sync::Arc, thread}; use crate::{ layers::{LayerConfig, create_server_builder}, networkers::{Connection, ServerTrait}, }; #[allow(dead_code)] pub fn run_listener_state( server: S, layers: Vec, on_connect_callback: R, state: Arc, ) /*-> Arc>>*/ where S: ServerTrait + Sync + Send + 'static, C: Connection + 'static, R: Fn(Box, Arc) + Sync + Send + 'static, A: Sync + Send + 'static, { thread::spawn(move || { let layer_builder = create_server_builder::(layers).unwrap(); info!("Started listener {}", server.get_info()); loop { match server.accept() { Ok(conn) => match layer_builder(conn) { Ok(conn) => { info!("New connection ({})", conn.get_info()); on_connect_callback(conn, Arc::clone(&state)); } Err(e) => { error!("Failed to create layers: {:?}", e); } }, Err(e) => { error!("Failed to accept connection: {:?}", e); } } } }); } #[allow(dead_code)] pub fn run_listener(server: S, layers: Vec, on_connect_callback: R) /*-> Arc>>*/ where S: ServerTrait + Sync + Send + 'static, C: Connection + 'static, R: Fn(Box) + Sync + Send + 'static, { // let clients: Arc>> = Arc::new(Mutex::new(Vec::new())); // let clients_clone = Arc::clone(&clients); thread::spawn(move || { let layer_builder = create_server_builder::(layers).unwrap(); info!("Started listener {}", server.get_info()); loop { match server.accept() { Ok(conn) => match layer_builder(conn) { Ok(conn) => { let con_info = conn.get_info(); info!("New connection ({})", con_info); on_connect_callback(conn); } Err(e) => { error!("Failed to create layers: {:?}", e); } }, Err(e) => { error!("Failed to accept connection: {:?}", e); } } } }); }