gameServer2/src/main.rs
author Wuzzy <Wuzzy2@mail.ru>
Sat, 21 Oct 2017 23:03:52 +0200
changeset 12738 353cb2ce6f9c
parent 12142 193dfdcb0620
child 12857 bd35cb2302b3
permissions -rw-r--r--
Fix AddAmmo setting ammo to 99 when trying to add infinite ammo This affected the portal mission, the crate only gave you 99 portal guns instead of infinite.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12130
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
     1
extern crate rand;
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
     2
extern crate mio;
12131
4348997e502b Refactor code to add more structure to it
unc0rr
parents: 12130
diff changeset
     3
extern crate slab;
12132
36ac9c075d0d - Use netbuf buffers for client connection stream
unc0rr
parents: 12131
diff changeset
     4
extern crate netbuf;
12138
81df2e1f9ae9 Some parsing using nom
unc0rr
parents: 12134
diff changeset
     5
#[macro_use]
81df2e1f9ae9 Some parsing using nom
unc0rr
parents: 12134
diff changeset
     6
extern crate nom;
12142
193dfdcb0620 - Use logging facilities instead of plain println!
unc0rr
parents: 12138
diff changeset
     7
#[macro_use]
193dfdcb0620 - Use logging facilities instead of plain println!
unc0rr
parents: 12138
diff changeset
     8
extern crate log;
193dfdcb0620 - Use logging facilities instead of plain println!
unc0rr
parents: 12138
diff changeset
     9
extern crate env_logger;
12130
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    10
12131
4348997e502b Refactor code to add more structure to it
unc0rr
parents: 12130
diff changeset
    11
//use std::io::*;
12130
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    12
//use rand::Rng;
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    13
//use std::cmp::Ordering;
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    14
use mio::tcp::*;
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    15
use mio::*;
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    16
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    17
mod utils;
12131
4348997e502b Refactor code to add more structure to it
unc0rr
parents: 12130
diff changeset
    18
mod server;
12134
07972a8c2433 - Start protocol parser implementation
unc0rr
parents: 12133
diff changeset
    19
mod protocol;
12130
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    20
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    21
fn main() {
12142
193dfdcb0620 - Use logging facilities instead of plain println!
unc0rr
parents: 12138
diff changeset
    22
    env_logger::init().unwrap();
193dfdcb0620 - Use logging facilities instead of plain println!
unc0rr
parents: 12138
diff changeset
    23
193dfdcb0620 - Use logging facilities instead of plain println!
unc0rr
parents: 12138
diff changeset
    24
    info!("Hedgewars game server, protocol {}", utils::PROTOCOL_VERSION);
12130
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    25
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    26
    let address = "0.0.0.0:46631".parse().unwrap();
12131
4348997e502b Refactor code to add more structure to it
unc0rr
parents: 12130
diff changeset
    27
    let listener = TcpListener::bind(&address).unwrap();
12133
f50876f3eff8 Refactor modules layout
unc0rr
parents: 12132
diff changeset
    28
    let mut server = server::server::HWServer::new(listener, 1024, 512);
12130
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    29
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    30
    let poll = Poll::new().unwrap();
12131
4348997e502b Refactor code to add more structure to it
unc0rr
parents: 12130
diff changeset
    31
    server.register(&poll).unwrap();
12130
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    32
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    33
    let mut events = Events::with_capacity(1024);
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    34
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    35
    loop {
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    36
        poll.poll(&mut events, None).unwrap();
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    37
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    38
        for event in events.iter() {
12132
36ac9c075d0d - Use netbuf buffers for client connection stream
unc0rr
parents: 12131
diff changeset
    39
            if event.kind().is_readable() {
36ac9c075d0d - Use netbuf buffers for client connection stream
unc0rr
parents: 12131
diff changeset
    40
                match event.token() {
36ac9c075d0d - Use netbuf buffers for client connection stream
unc0rr
parents: 12131
diff changeset
    41
                    utils::SERVER => server.accept(&poll).unwrap(),
36ac9c075d0d - Use netbuf buffers for client connection stream
unc0rr
parents: 12131
diff changeset
    42
                    tok => server.client_readable(&poll, tok).unwrap(),
36ac9c075d0d - Use netbuf buffers for client connection stream
unc0rr
parents: 12131
diff changeset
    43
                }
36ac9c075d0d - Use netbuf buffers for client connection stream
unc0rr
parents: 12131
diff changeset
    44
            }
36ac9c075d0d - Use netbuf buffers for client connection stream
unc0rr
parents: 12131
diff changeset
    45
            if event.kind().is_writable() {
36ac9c075d0d - Use netbuf buffers for client connection stream
unc0rr
parents: 12131
diff changeset
    46
                match event.token() {
36ac9c075d0d - Use netbuf buffers for client connection stream
unc0rr
parents: 12131
diff changeset
    47
                    utils::SERVER => unreachable!(),
36ac9c075d0d - Use netbuf buffers for client connection stream
unc0rr
parents: 12131
diff changeset
    48
                    tok => server.client_writable(&poll, tok).unwrap(),
36ac9c075d0d - Use netbuf buffers for client connection stream
unc0rr
parents: 12131
diff changeset
    49
                }
12130
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    50
            }
12142
193dfdcb0620 - Use logging facilities instead of plain println!
unc0rr
parents: 12138
diff changeset
    51
            if event.kind().is_hup() || event.kind().is_error() {
193dfdcb0620 - Use logging facilities instead of plain println!
unc0rr
parents: 12138
diff changeset
    52
                match event.token() {
193dfdcb0620 - Use logging facilities instead of plain println!
unc0rr
parents: 12138
diff changeset
    53
                    utils::SERVER => unreachable!(),
193dfdcb0620 - Use logging facilities instead of plain println!
unc0rr
parents: 12138
diff changeset
    54
                    tok => server.client_error(&poll, tok).unwrap(),
193dfdcb0620 - Use logging facilities instead of plain println!
unc0rr
parents: 12138
diff changeset
    55
                }
193dfdcb0620 - Use logging facilities instead of plain println!
unc0rr
parents: 12138
diff changeset
    56
            }
12130
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    57
        }
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    58
    }
858bf4d04c54 Start server implementation in rust
unc0rr
parents:
diff changeset
    59
}