1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
use std::io::{self};
use std::net::{SocketAddr};
use umio::external::{Sender};
use server::dispatcher::{DispatchMessage};
use server::handler::{ServerHandler};
mod dispatcher;
pub mod handler;
pub struct TrackerServer {
send: Sender<DispatchMessage>
}
impl TrackerServer {
pub fn run<H>(bind: SocketAddr, handler: H) -> io::Result<TrackerServer>
where H: ServerHandler + 'static {
dispatcher::create_dispatcher(bind, handler).map(|send| {
TrackerServer{ send: send }
})
}
}
impl Drop for TrackerServer {
fn drop(&mut self) {
self.send.send(DispatchMessage::Shutdown)
.expect("bip_utracker: TrackerServer Failed To Send Shutdown Message");
}
}