From fe0dfc7d51edf712b89dcd60ad2e1be2667bcf2f Mon Sep 17 00:00:00 2001 From: pebloop Date: Sat, 5 Jul 2025 19:16:39 +0200 Subject: [PATCH] Add networking --- src/main.rs | 2 ++ src/network.rs | 38 ++++++++++++++++++++++++++++++++++++++ src/parser.rs | 8 ++++---- 3 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 src/network.rs diff --git a/src/main.rs b/src/main.rs index ef8ff34..569cbda 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,8 @@ use std::process::ExitCode; mod cli; +mod network; +mod parser; fn main() -> ExitCode { let mut args = std::env::args(); diff --git a/src/network.rs b/src/network.rs new file mode 100644 index 0000000..45e0450 --- /dev/null +++ b/src/network.rs @@ -0,0 +1,38 @@ +use std::net::{SocketAddr, TcpListener, TcpStream}; + +pub enum NetworkError { + IO(std::io::Error), + NoIncomingConnexionError, +} + +impl From for NetworkError { + fn from(value: std::io::Error) -> Self { + NetworkError::IO(value) + } +} + +struct TcpPlayer { + connexion_stream: TcpStream, +} + +impl TcpPlayer { + pub fn host(addr: SocketAddr) -> Result { + let listener = TcpListener::bind(addr)?; + let mut streams = listener.incoming(); + let stream = streams + .next() + .ok_or(NetworkError::NoIncomingConnexionError)??; + + Ok(TcpPlayer { + connexion_stream: stream, + }) + } + + pub fn join(addr: SocketAddr) -> Result { + let stream = TcpStream::connect(addr)?; + + Ok(TcpPlayer { + connexion_stream: stream, + }) + } +} diff --git a/src/parser.rs b/src/parser.rs index 589f4ef..9f5a301 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -22,7 +22,7 @@ pub struct Vector2u16 { impl Vector2u16 { pub fn new(x: u16, y: u16) -> Self { - Vector2u16 { x: x, y: y } + Vector2u16 { x, y } } } @@ -35,15 +35,15 @@ pub struct Boat { impl Boat { pub fn new(first_pos: Vector2u16, last_pos: Vector2u16) -> Self { Boat { - first_pos: first_pos, - last_pos: last_pos, + first_pos, + last_pos, } } } pub fn parse_file(file_path: &Path) -> Result<[Boat; 4], ParserError> { let mut file = File::open(file_path)?; - Ok(parse_ships(&mut file)?) + parse_ships(&mut file) } pub fn parse_ships(file: &mut T) -> Result<[Boat; 4], ParserError> { -- 2.49.0