Fix to the new nightly.
[crypto_lab1.git] / lab1_rust / src / end_point.rs
index e7b0e32..d2cedcb 100644 (file)
@@ -1,6 +1,7 @@
 use std::io;
 use std::io::{ MemWriter, Acceptor, Listener, TcpStream, IoResult, IoError, EndOfFile };
 use std::io::net::tcp::{ TcpAcceptor, TcpListener };
+use std::thread::Thread;
 use packet;
 use packet::{ Packet, ReadingResult, PacketType };
 use packet::PacketType::{ Command, Answer, Error };
@@ -30,18 +31,19 @@ impl Server {
          acceptor: acceptor.clone()
       };
 
-      spawn(proc() {
+      Thread::spawn(move || {
          loop {
             for stream in acceptor.incoming() {
                match stream {
-                  Ok(stream) => spawn(proc() {
-                     Server::handle_client(EndPoint::new(stream, variant));
-                  }),
+                  Ok(stream) =>
+                     Thread::spawn(move || {
+                        Server::handle_client(EndPoint::new(stream, variant));
+                     }).detach(),
                   _ => return
                }
             }
          }
-      });
+      }).detach();
 
       Ok(server)
    }
@@ -136,7 +138,7 @@ impl Client {
          let mut m = MemWriter::new();
          match (Packet { t: Command(Packet::random_packet_data(&[42])), timestamp: timestamp }).write(&mut m, packet::Variant::Weak) {
             Err(_) => vec!(),
-            _ => m.unwrap()
+            _ => m.into_inner()
          }
       }
 
@@ -221,7 +223,7 @@ impl Client {
             let mut m = MemWriter::new();
             let raw_packet = match (Packet { t: Command(Packet::random_packet_data(&[42])), timestamp: client.end_point.current_timestamp }).write_with_padding_fun(&mut m, packet::Variant::Weak, |_, _| -> u8 { 0 }) {
                Err(_) => vec!(),
-               _ => m.unwrap()
+               _ => m.into_inner()
             };
 
             match client.end_point.send_raw_with_result(raw_packet.as_slice()) {
@@ -236,7 +238,7 @@ impl Client {
 
       let mut nb_test_passed = 0;
       for (i, test) in range(1, tests.len()+1).zip(tests.iter_mut()) {
-         println!("===== Test case #{}:", i)
+         println!("===== Test case #{}:", i);
          if execute(test) {
             nb_test_passed += 1;
             println!("===== Test passed");
@@ -299,10 +301,9 @@ impl EndPoint {
 
    fn read(&mut self) -> ReadingResult {
       fn send_error(ep: &mut EndPoint, error_type: packet::ErrorType) {
-         match ep.send(Error(error_type)) {
-            Err(e) => println!("Unable to send error packet: {}", e),
-            Ok(_) => ()
-         };
+         if let Err(e) = ep.send(Error(error_type)) {
+            println!("Unable to send error packet: {}", e)
+         }
       };
 
       self.socket.set_timeout(DEFAULT_TIMEOUT);