+use std::io::{ TcpListener, TcpStream, Acceptor, Listener, IoError, IoResult };
+use std::io::net::tcp::{ TcpAcceptor };
+use command::{ Command, Packet, Error };
+use crypto::Crypto;
+
+pub struct Server {
+ acceptor: TcpAcceptor,
+ crypto: Crypto
+}
+
+impl Server {
+ pub fn new(port: u16) -> IoResult<Server> {
+ let mut acceptor = try!(TcpListener::bind("127.0.0.1", port).listen());
+ let server = Server {
+ acceptor: acceptor.clone(),
+ crypto: Crypto::new()
+ };
+
+ 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) {
+ println!("new connection!");
+ 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")
+ }
+ }
+}
\ No newline at end of file