From b66fdd62b3c7493a2a65dc8bf01a30a01d5feb92 Mon Sep 17 00:00:00 2001 From: michael-bailey Date: Wed, 17 Mar 2021 09:56:51 +0000 Subject: [PATCH] added implemetation of info command on te server --- src/lib/server/mod.rs | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/lib/server/mod.rs b/src/lib/server/mod.rs index 4b7edcc..49a5374 100644 --- a/src/lib/server/mod.rs +++ b/src/lib/server/mod.rs @@ -2,6 +2,7 @@ pub mod client_management; use std::sync::{Arc, Weak, Mutex}; +use std::collections::HashMap; use std::net::TcpListener; use std::io::Write; use std::io::Read; @@ -44,30 +45,38 @@ impl Server { impl ICooperative for Server{ fn tick(&self) { - let mut buffer = vec![0; 1024]; + let mut buffer = vec![0; 64]; - // get connections + // handle new connections for connection in self.server_socket.incoming() { match connection { Ok(mut stream) => { - let _ = stream.write(Commands::Request(None).to_string().as_bytes()); - let _ = stream.read(&mut buffer); + stream.write_all(Commands::Request(None).to_string().as_bytes()).expect("error writing socket"); + stream.read_to_end(&mut buffer).expect("error reading sokcet"); + + println!("buffer: {:?}", &buffer); let command = Commands::from(&mut buffer); match command { - Commands::Info(None) => {let _ = stream.write("todo".as_bytes());} + Commands::Info(None) => { + let server_config = vec![ + ("name".to_string(), "Test server".to_string()) + ]; + let map: HashMap = server_config.into_iter().collect(); + stream.write_all(Commands::Success(Some(map)).to_string().as_bytes()) + .expect("error sending response"); + } + Commands::Connect(Some(map)) => println!("connect command: {:?}", &map), + _ => {let _ = stream.write("not implemented!".as_bytes());} } - }, _ => println!("!connection error occured!"), } } - - - // message loop + // handle new messages loop for message in self.receiver.iter() { match message { ServerMessages::ClientConnected(client) => println!("client connected: {:?}", client),