use std::net::SocketAddr;
use fibers::Spawn;
use HandleMessage;
use transport::TcpServerTransport;
use server::BaseServer;
use server::futures::BaseServerLoop;
#[derive(Debug)]
pub struct TcpServer {
bind_addr: SocketAddr,
}
impl TcpServer {
pub fn new(bind_addr: SocketAddr) -> Self {
TcpServer { bind_addr: bind_addr }
}
pub fn start<S, H>(&self, spawner: S, handler: H) -> TcpServerLoop<H>
where S: Spawn + Clone + Send + 'static,
H: HandleMessage
{
let transport = TcpServerTransport::new(spawner.clone(), self.bind_addr);
BaseServer::start(spawner, transport, handler)
}
}
pub type TcpServerLoop<H> = BaseServerLoop<TcpServerTransport, H>;