gameServer2/src/main.rs
author antonc27 <antonc27@mail.ru>
Fri, 29 Dec 2017 22:35:36 +0100
branchios-develop
changeset 12870 350d8bde5ccd
parent 12137 193dfdcb0620
child 12852 bd35cb2302b3
permissions -rw-r--r--
- Lazy checks for preventing crash when drawing 'nice hogs' on config screen (frontend) on iPad. Now we have animation glitch sometimes, but this is preferable to crash anyway

extern crate rand;
extern crate mio;
extern crate slab;
extern crate netbuf;
#[macro_use]
extern crate nom;
#[macro_use]
extern crate log;
extern crate env_logger;

//use std::io::*;
//use rand::Rng;
//use std::cmp::Ordering;
use mio::tcp::*;
use mio::*;

mod utils;
mod server;
mod protocol;

fn main() {
    env_logger::init().unwrap();

    info!("Hedgewars game server, protocol {}", utils::PROTOCOL_VERSION);

    let address = "0.0.0.0:46631".parse().unwrap();
    let listener = TcpListener::bind(&address).unwrap();
    let mut server = server::server::HWServer::new(listener, 1024, 512);

    let poll = Poll::new().unwrap();
    server.register(&poll).unwrap();

    let mut events = Events::with_capacity(1024);

    loop {
        poll.poll(&mut events, None).unwrap();

        for event in events.iter() {
            if event.kind().is_readable() {
                match event.token() {
                    utils::SERVER => server.accept(&poll).unwrap(),
                    tok => server.client_readable(&poll, tok).unwrap(),
                }
            }
            if event.kind().is_writable() {
                match event.token() {
                    utils::SERVER => unreachable!(),
                    tok => server.client_writable(&poll, tok).unwrap(),
                }
            }
            if event.kind().is_hup() || event.kind().is_error() {
                match event.token() {
                    utils::SERVER => unreachable!(),
                    tok => server.client_error(&poll, tok).unwrap(),
                }
            }
        }
    }
}