rust/hedgewars-server/src/main.rs
changeset 14792 38e66519e585
parent 14783 b3adc030104b
child 14793 9de13d9a6312
equal deleted inserted replaced
14791:b889d9e1115f 14792:38e66519e585
       
     1 #![feature(self_struct_ctor)] 
     1 #![allow(unused_imports)]
     2 #![allow(unused_imports)]
     2 #![deny(bare_trait_objects)]
     3 #![deny(bare_trait_objects)]
     3 
     4 
       
     5 extern crate getopts;
       
     6 use getopts::Options;
       
     7 use std::env;
     4 use log::*;
     8 use log::*;
     5 use mio::net::*;
     9 use mio::net::*;
     6 use mio::*;
    10 use mio::*;
     7 
    11 
     8 mod protocol;
    12 mod protocol;
    13 use std::time::Duration;
    17 use std::time::Duration;
    14 
    18 
    15 fn main() {
    19 fn main() {
    16     env_logger::init();
    20     env_logger::init();
    17 
    21 
       
    22     let args: Vec<String> = env::args().collect();
       
    23     let mut opts = Options::new();
       
    24 
       
    25     opts.optopt("p", "port", "port - defaults to 46631", "PORT");
       
    26     opts.optflag("h", "help", "help");
       
    27     let matches = match opts.parse(&args[1..]) {
       
    28         Ok(m) => { m }
       
    29         Err(f) => { panic!(f.to_string()) }
       
    30     };
       
    31     if matches.opt_present("h") {
       
    32         println!("-p/--port - defaults to 46631");
       
    33         return;
       
    34     }
    18     info!("Hedgewars game server, protocol {}", utils::SERVER_VERSION);
    35     info!("Hedgewars game server, protocol {}", utils::SERVER_VERSION);
    19 
    36 
    20     let address = "0.0.0.0:46631".parse().unwrap();
    37     let address;
       
    38     if matches.opt_present("p") {
       
    39         match matches.opt_str("p") {
       
    40             Some(x) => address = format!("0.0.0.0:{}", x).parse().unwrap(),
       
    41             None => address = "0.0.0.0:46631".parse().unwrap(),
       
    42         }
       
    43     }
       
    44     else {
       
    45         address = "0.0.0.0:46631".parse().unwrap();
       
    46     }
       
    47 
    21     let listener = TcpListener::bind(&address).unwrap();
    48     let listener = TcpListener::bind(&address).unwrap();
    22 
    49 
    23     let poll = Poll::new().unwrap();
    50     let poll = Poll::new().unwrap();
    24     let mut hw_network = NetworkLayer::new(listener, 1024, 512);
    51     let mut hw_network = NetworkLayer::new(listener, 1024, 512);
    25     hw_network.register_server(&poll).unwrap();
    52     hw_network.register_server(&poll).unwrap();