author | alfadur |
Fri, 09 Mar 2018 23:34:46 +0100 | |
changeset 13156 | deab88f1f6f7 |
parent 13124 | 1e39b8749072 |
child 13419 | 28b314ad566d |
permissions | -rw-r--r-- |
13124
1e39b8749072
separated the server logic from all the async io mess.
alfadur
parents:
12858
diff
changeset
|
1 |
#![allow(unused_imports)] |
1e39b8749072
separated the server logic from all the async io mess.
alfadur
parents:
12858
diff
changeset
|
2 |
|
12130 | 3 |
extern crate rand; |
4 |
extern crate mio; |
|
12131 | 5 |
extern crate slab; |
12132 | 6 |
extern crate netbuf; |
12138 | 7 |
#[macro_use] |
8 |
extern crate nom; |
|
12142
193dfdcb0620
- Use logging facilities instead of plain println!
unc0rr
parents:
12138
diff
changeset
|
9 |
#[macro_use] |
193dfdcb0620
- Use logging facilities instead of plain println!
unc0rr
parents:
12138
diff
changeset
|
10 |
extern crate log; |
193dfdcb0620
- Use logging facilities instead of plain println!
unc0rr
parents:
12138
diff
changeset
|
11 |
extern crate env_logger; |
13124
1e39b8749072
separated the server logic from all the async io mess.
alfadur
parents:
12858
diff
changeset
|
12 |
#[macro_use] extern crate proptest; |
12130 | 13 |
|
12131 | 14 |
//use std::io::*; |
12130 | 15 |
//use rand::Rng; |
16 |
//use std::cmp::Ordering; |
|
12858 | 17 |
use mio::net::*; |
12130 | 18 |
use mio::*; |
19 |
||
20 |
mod utils; |
|
12131 | 21 |
mod server; |
12134 | 22 |
mod protocol; |
12130 | 23 |
|
13124
1e39b8749072
separated the server logic from all the async io mess.
alfadur
parents:
12858
diff
changeset
|
24 |
use server::network::NetworkLayer; |
1e39b8749072
separated the server logic from all the async io mess.
alfadur
parents:
12858
diff
changeset
|
25 |
|
12130 | 26 |
fn main() { |
12142
193dfdcb0620
- Use logging facilities instead of plain println!
unc0rr
parents:
12138
diff
changeset
|
27 |
env_logger::init().unwrap(); |
193dfdcb0620
- Use logging facilities instead of plain println!
unc0rr
parents:
12138
diff
changeset
|
28 |
|
193dfdcb0620
- Use logging facilities instead of plain println!
unc0rr
parents:
12138
diff
changeset
|
29 |
info!("Hedgewars game server, protocol {}", utils::PROTOCOL_VERSION); |
12130 | 30 |
|
31 |
let address = "0.0.0.0:46631".parse().unwrap(); |
|
12131 | 32 |
let listener = TcpListener::bind(&address).unwrap(); |
12130 | 33 |
|
34 |
let poll = Poll::new().unwrap(); |
|
13124
1e39b8749072
separated the server logic from all the async io mess.
alfadur
parents:
12858
diff
changeset
|
35 |
let mut hw_network = NetworkLayer::new(listener, 1024, 512); |
1e39b8749072
separated the server logic from all the async io mess.
alfadur
parents:
12858
diff
changeset
|
36 |
hw_network.register_server(&poll).unwrap(); |
12130 | 37 |
|
38 |
let mut events = Events::with_capacity(1024); |
|
39 |
||
40 |
loop { |
|
41 |
poll.poll(&mut events, None).unwrap(); |
|
42 |
||
43 |
for event in events.iter() { |
|
12858 | 44 |
if event.readiness() & Ready::readable() == Ready::readable() { |
12132 | 45 |
match event.token() { |
13124
1e39b8749072
separated the server logic from all the async io mess.
alfadur
parents:
12858
diff
changeset
|
46 |
utils::SERVER => hw_network.accept_client(&poll).unwrap(), |
1e39b8749072
separated the server logic from all the async io mess.
alfadur
parents:
12858
diff
changeset
|
47 |
Token(tok) => hw_network.client_readable(&poll, tok).unwrap(), |
12132 | 48 |
} |
49 |
} |
|
12858 | 50 |
if event.readiness() & Ready::writable() == Ready::writable() { |
12132 | 51 |
match event.token() { |
52 |
utils::SERVER => unreachable!(), |
|
13124
1e39b8749072
separated the server logic from all the async io mess.
alfadur
parents:
12858
diff
changeset
|
53 |
Token(tok) => hw_network.client_writable(&poll, tok).unwrap(), |
12132 | 54 |
} |
12130 | 55 |
} |
12858 | 56 |
// if event.kind().is_hup() || event.kind().is_error() { |
57 |
// match event.token() { |
|
58 |
// utils::SERVER => unreachable!(), |
|
59 |
// Token(tok) => server.client_error(&poll, tok).unwrap(), |
|
60 |
// } |
|
61 |
// } |
|
12130 | 62 |
} |
63 |
} |
|
64 |
} |