14df2d4637b090cb805fba33128b523aae6b9a03
[crypto_lab1.git] / src / client.rs
1 use std::io::{ TcpStream, IoResult };
2 use packet::{ Command, Packet };
3
4 pub struct Client {
5 socket: TcpStream,
6 current_timestamp: u64
7 }
8
9 impl Client {
10 pub fn new(address: &str, port: u16) -> IoResult<Client> {
11 Ok(Client {
12 socket: try!(TcpStream::connect(address, port)),
13 current_timestamp: 0
14 })
15 }
16
17 pub fn close(&mut self) -> IoResult<()> {
18 try!(self.socket.close_read());
19 try!(self.socket.close_write());
20 Ok(())
21 }
22
23 pub fn start_tests(&mut self) {
24 self.current_timestamp += 1;
25 let timestamp = self.current_timestamp;
26 self.send(Packet { timestamp: timestamp, t: Command(Packet::random_packet_data()) });
27 }
28
29 fn send(&mut self, p: Packet) {
30 println!("Client sends packet: {}", p);
31 match p.write(&mut self.socket) {
32 Err(e) => println!("Error on sending: {}", e),
33 _ => ()
34 }
35 }
36 }