X-Git-Url: http://git.euphorik.ch/?p=crypto_lab1.git;a=blobdiff_plain;f=src%2Fserver.rs;h=b655ae7207630512da81a246dcd61f12e1df1fe7;hp=1ce5f955a80539cd115d5bf69e5caf6e04b0de35;hb=db8678377c7ea4fa7183a54c1bfe095e051882a8;hpb=3a33f82b92400ffabdc5fd7bdcbdc9f888277418 diff --git a/src/server.rs b/src/server.rs index 1ce5f95..b655ae7 100644 --- a/src/server.rs +++ b/src/server.rs @@ -1,6 +1,6 @@ -use std::io::{ TcpListener, TcpStream, Acceptor, Listener, IoError, IoResult }; +use std::io::{ TcpListener, TcpStream, Acceptor, Listener, IoError, IoResult, EndOfFile }; use std::io::net::tcp::{ TcpAcceptor }; -use command::{ Command, Packet, Error }; +use packet::{ Packet, IOReadError }; pub struct Server { acceptor: TcpAcceptor @@ -34,14 +34,28 @@ impl Server { self.acceptor.close_accept() } - fn handle_client(mut stream: TcpStream) { - + fn handle_client(mut stream: TcpStream) { let mut current_timestamp = 0u64; - match Packet::read(&mut stream) { - Ok(Command(packet)) => println!("CommandPacket"), - Ok(Error(packet)) => println!("AnswerPacket"), - Err(io_error) => println!("IO Error") + loop { + // stream.set_timeout(Some(1000000000)); + match Packet::read(&mut stream) { + Ok(packet) => { + if packet.timestamp <= current_timestamp { + println!("Error, timestamp mismatch, current timestamp: {}, packet received: {}", current_timestamp, packet); + } else { + current_timestamp += 1; + println!("Receive packet: {}", packet); + } + }, + // Socket has been closed. + Err(IOReadError(IoError { kind: EndOfFile, .. })) => { + return; + }, + Err(e) => { + println!("Read error: {}", e) + } + } } } } \ No newline at end of file