added implemetation of info command on te server

This commit is contained in:
michael-bailey 2021-03-17 09:56:51 +00:00
parent 71fe467ca2
commit b66fdd62b3
1 changed files with 18 additions and 9 deletions

View File

@ -2,6 +2,7 @@ pub mod client_management;
use std::sync::{Arc, Weak, Mutex}; use std::sync::{Arc, Weak, Mutex};
use std::collections::HashMap;
use std::net::TcpListener; use std::net::TcpListener;
use std::io::Write; use std::io::Write;
use std::io::Read; use std::io::Read;
@ -44,30 +45,38 @@ impl Server {
impl ICooperative for Server{ impl ICooperative for Server{
fn tick(&self) { 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() { for connection in self.server_socket.incoming() {
match connection { match connection {
Ok(mut stream) => { Ok(mut stream) => {
let _ = stream.write(Commands::Request(None).to_string().as_bytes()); stream.write_all(Commands::Request(None).to_string().as_bytes()).expect("error writing socket");
let _ = stream.read(&mut buffer); stream.read_to_end(&mut buffer).expect("error reading sokcet");
println!("buffer: {:?}", &buffer);
let command = Commands::from(&mut buffer); let command = Commands::from(&mut buffer);
match command { 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<String, String> = 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());} _ => {let _ = stream.write("not implemented!".as_bytes());}
} }
}, },
_ => println!("!connection error occured!"), _ => println!("!connection error occured!"),
} }
} }
// handle new messages loop
// message loop
for message in self.receiver.iter() { for message in self.receiver.iter() {
match message { match message {
ServerMessages::ClientConnected(client) => println!("client connected: {:?}", client), ServerMessages::ClientConnected(client) => println!("client connected: {:?}", client),