mod client; mod config; mod control; mod proto; extern crate byteorder; extern crate crypto; #[macro_use] extern crate log; extern crate env_logger; extern crate mio; extern crate rustc_serialize; extern crate websocket; use std::io; use std::net::ToSocketAddrs; use mio::EventLoop; use mio::tcp::TcpStream; use proto::PacketStream; use client::Client; fn connect(hostname: &str, port: u16) -> io::Result { for sock_addr in try!((hostname, port).to_socket_addrs()) { if let Ok(stream) = TcpStream::connect(&sock_addr) { return Ok(stream) } } Err(io::Error::new(io::ErrorKind::Other, format!("Cannot connect to {}:{}", hostname, port))) } fn main() { env_logger::init().unwrap(); let host = config::SERVER_HOST; let port = config::SERVER_PORT; let stream = connect(host, port).unwrap(); info!("Connected to {}:{}", host, port); let mut event_loop = EventLoop::new().unwrap(); let packet_stream = PacketStream::new(stream); let mut server_conn = Client::new(packet_stream); server_conn.register_all(&mut event_loop).unwrap(); event_loop.run(&mut server_conn).unwrap(); }