extern crate space; use std::thread::sleep; use std::time::Duration; use std::net::TcpListener; use std::collections::HashMap; use space::mass::Mass; use space::math::rand_name; use space::server::connection::ServerConnection; fn populate() -> HashMap { let mut masses : HashMap = HashMap::new(); for _ in 0..10 { masses.insert(rand_name(), Mass::new_astroid()); } masses } fn main() { let listener = TcpListener::bind("localhost:6000").unwrap(); listener.set_nonblocking(true).unwrap(); let mut masses = populate(); let mut connections : Vec = Vec::new(); for stream in listener.incoming() { match stream { Ok(stream) => { let new_connection = ServerConnection::new(stream, &mut masses); let exists = connections.iter().position(|connection| connection.name == new_connection.name && connection.module_type == new_connection.module_type); match exists { Some(index) => { connections.remove(index); }, _ => (), } connections.push(new_connection); }, _ => { for i in 0..connections.len() { connections[i].process(&mut masses); } for mass in masses.values_mut() { mass.process(); } sleep(Duration::from_millis(100)); }, } } }