X-Git-Url: http://git.euphorik.ch/?p=crypto_lab1.git;a=blobdiff_plain;f=src%2Fserver.rs;fp=src%2Fserver.rs;h=0000000000000000000000000000000000000000;hp=b655ae7207630512da81a246dcd61f12e1df1fe7;hb=8226b0eced022af21512d87902bf6e252afe1a67;hpb=c52e8d69e983c2ae02554841e35670078569b66d diff --git a/src/server.rs b/src/server.rs deleted file mode 100644 index b655ae7..0000000 --- a/src/server.rs +++ /dev/null @@ -1,61 +0,0 @@ -use std::io::{ TcpListener, TcpStream, Acceptor, Listener, IoError, IoResult, EndOfFile }; -use std::io::net::tcp::{ TcpAcceptor }; -use packet::{ Packet, IOReadError }; - -pub struct Server { - acceptor: TcpAcceptor -} - -impl Server { - pub fn new(port: u16) -> IoResult { - let mut acceptor = try!(TcpListener::bind("127.0.0.1", port).listen()); - - let server = Server { - acceptor: acceptor.clone() - }; - - spawn(proc() { - loop { - for stream in acceptor.incoming() { - match stream { - Err(_) => return, - Ok(stream) => spawn(proc() { - Server::handle_client(stream); - }) - } - } - } - }); - - Ok(server) - } - - pub fn close(&mut self) -> IoResult<()> { - self.acceptor.close_accept() - } - - fn handle_client(mut stream: TcpStream) { - let mut current_timestamp = 0u64; - - 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