compiled (no) nd

This commit is contained in:
mux 2024-08-11 13:09:21 +02:00
parent 1eae9d6f33
commit 3b35da7cb2
5 changed files with 64 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/target
Cargo.lock

6
Cargo.toml Normal file
View File

@ -0,0 +1,6 @@
[package]
name = "Uno"
version = "0.1.0"
edition = "2021"
[dependencies]

0
src/lib.rs Normal file
View File

5
src/main.rs Normal file
View File

@ -0,0 +1,5 @@
pub mod tcp_server;
fn main() {
println!("Hello, world!");
}

51
src/tcp_server.rs Normal file
View File

@ -0,0 +1,51 @@
use std::{
net::{TcpListener, TcpStream},
io::{prelude::*, BufReader, BufWriter},
};
fn main(){
let listener = TcpListener::bind("0.0.0.0:8000").unwrap();
for stream in listener{
let (reader, writer) = create_buffers(stream.unwrap());
let result = check_protocol(reader, writer).unwrap();
if result.equals("Uno-Enthusiast99") {
println!("It works!");
}
}
}
fn create_buffers(&mut stream : TcpStream) -> (BufReader, BufWriter) {
(BufReader::new(stream), BufWriter::new(stream))
}
fn check_protocol(&reader : BufReader, &writer : BufWriter) -> Result {
let init_message : Vec<_> = reader
.lines()
.map(|result| result.unwrap())
.take_while(|line| !line.is_empty())
.collect()
.iter();
let mut is_valid = true;
is_valid = init_message.next().unwrap_or_else(|| "invalid") == "app:uno";
is_valid = init_message.next().unwrap(|| "invalid") == "version:0.1";
is_valid = init_message.next().unwrap(|| "invalid").contains("player_name:");
if init_message.next() != None {
is_valid = false;
}
if !is_valid {
writer.write("Error").unwrap();
writer.flush().unwrap();
return Err;
}
writer.write("Ok").unwrap();
writer.flush().unwrap();
Ok( item.split(':').unwrap() )
}
// fn register_player(player_name : &str, reader : BufReader, writer : BufWriter){
//
// }