mio_gate/
server.rs

1use std::io;
2
3use mio::{Poll, Events};
4
5use crate::header::EventTag;
6
7use self::gate::Gate;
8
9mod gate;
10mod hub;
11mod line;
12
13
14pub struct Server {
15    p:Poll,
16    events:Events,
17    gate:Gate
18}
19
20impl Server {
21    pub fn new(addr:&str) -> io::Result<Server> {
22        let p = Poll::new()?;
23        let events = Events::with_capacity(u8::MAX.into());
24        let gate = Gate::new(addr,&p)?;
25        Ok(Server { p, events , gate })
26    }
27
28    pub fn start(&mut self,f:fn(tag:EventTag,data:&[u8])) {
29        self.gate.hub.set_hook(f);
30        loop {
31            self.p.poll(&mut self.events, None).unwrap();
32            for event in self.events.iter() {
33                self.gate.process(event,&self.p);
34            }
35        }
36    }
37
38   
39}
40