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;
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");
}
}